From 1c955e5e2c5d3f11f4877d1349ea68c12cea2d65 Mon Sep 17 00:00:00 2001 From: JoeWang1127 Date: Wed, 30 Sep 2026 15:32:50 +0000 Subject: [PATCH] feat: update API sources and regenerate --- librarian.yaml | 4 +- .../google/ads/datamanager/__init__.py | 10 + .../google/ads/datamanager_v1/__init__.py | 11 + .../ads/datamanager_v1/gapic_metadata.json | 30 + .../ingestion_service/async_client.py | 185 + .../services/ingestion_service/client.py | 181 + .../ingestion_service/transports/base.py | 54 + .../ingestion_service/transports/grpc.py | 66 + .../transports/grpc_asyncio.py | 98 + .../ingestion_service/transports/rest.py | 436 + .../ingestion_service/transports/rest_base.py | 34 + .../ads/datamanager_v1/types/__init__.py | 12 + .../google/ads/datamanager_v1/types/error.py | 15 + .../datamanager_v1/types/ingestion_service.py | 133 + .../google/ads/datamanager_v1/types/user.py | 58 + ...ed_ingestion_service_ingest_users_async.py | 63 + ...ted_ingestion_service_ingest_users_sync.py | 63 + ...ed_ingestion_service_remove_users_async.py | 62 + ...ted_ingestion_service_remove_users_sync.py | 62 + ...et_metadata_google.ads.datamanager.v1.json | 306 + .../datamanager_v1/test_ingestion_service.py | 1731 ++- .../google/apps/chat_v1/types/membership.py | 7 +- .../google/apps/chat_v1/types/message.py | 7 +- .../google/apps/chat_v1/types/user.py | 53 +- .../unit/gapic/chat_v1/test_chat_service.py | 10 + .../cloud/apigateway_v1/types/apigateway.py | 24 +- .../google/cloud/bigtable_v2/__init__.py | 4 + .../cloud/bigtable_v2/types/__init__.py | 4 + .../google/cloud/bigtable_v2/types/session.py | 87 + .../.repo-metadata.json | 2 +- .../README.rst | 2 +- .../docs/README.rst | 2 +- .../commerce_transaction/async_client.py | 81 +- .../services/commerce_transaction/client.py | 81 +- .../commerce_transaction/transports/rest.py | 81 +- .../types/private_offer.py | 57 +- .../commerceproducer_v1beta/types/service.py | 131 + .../test_commerce_transaction.py | 7 + .../docs/compute_v1beta/image_views.rst | 4 + .../google/cloud/compute/__init__.py | 6 + .../google/cloud/compute_v1beta/__init__.py | 6 + .../cloud/compute_v1beta/gapic_metadata.json | 5 + .../client.py | 4 + .../services/image_views/client.py | 142 + .../services/image_views/pagers.py | 117 + .../services/image_views/transports/base.py | 26 + .../services/image_views/transports/rest.py | 205 + .../image_views/transports/rest_base.py | 16 + .../cloud/compute_v1beta/types/__init__.py | 6 + .../cloud/compute_v1beta/types/compute.py | 419 +- ..._v1beta_generated_image_views_list_sync.py | 55 + ..._metadata_google.cloud.compute.v1beta.json | 84 + .../test_future_reservations.py | 4 + .../gapic/compute_v1beta/test_image_views.py | 410 +- .../test_instance_group_managers.py | 30 +- .../test_region_instance_group_managers.py | 30 +- .../compute_v1beta/test_region_url_maps.py | 11 +- .../unit/gapic/compute_v1beta/test_routers.py | 36 +- .../gapic/compute_v1beta/test_url_maps.py | 11 +- .../global_frontend_settings_service.rst | 6 + .../docs/compute_v1/image_views.rst | 10 + .../docs/compute_v1/managed_rulesets.rst | 10 + .../docs/compute_v1/services_.rst | 3 + .../google/cloud/compute/__init__.py | 42 + .../google/cloud/compute_v1/__init__.py | 43 + .../cloud/compute_v1/gapic_metadata.json | 196 + .../services/accelerator_types/client.py | 24 +- .../compute_v1/services/addresses/client.py | 69 +- .../compute_v1/services/advice/client.py | 24 +- .../compute_v1/services/autoscalers/client.py | 69 +- .../services/backend_buckets/client.py | 114 +- .../services/backend_services/client.py | 134 +- .../services/cross_site_networks/client.py | 49 +- .../compute_v1/services/disk_types/client.py | 24 +- .../cloud/compute_v1/services/disks/client.py | 179 +- .../services/external_vpn_gateways/client.py | 54 +- .../services/firewall_policies/client.py | 209 +- .../firewall_policies/transports/rest_base.py | 8 +- .../compute_v1/services/firewalls/client.py | 64 +- .../services/forwarding_rules/client.py | 74 +- .../services/future_reservations/client.py | 64 +- .../services/global_addresses/client.py | 64 +- .../global_forwarding_rules/client.py | 69 +- .../__init__.py | 18 + .../client.py | 852 ++ .../transports/README.rst | 10 + .../transports/__init__.py | 33 + .../transports/base.py | 205 + .../transports/rest.py | 626 + .../transports/rest_base.py | 126 + .../global_network_endpoint_groups/client.py | 64 +- .../services/global_operations/client.py | 34 +- .../global_organization_operations/client.py | 24 +- .../client.py | 49 +- .../global_vm_extension_policies/client.py | 54 +- .../services/health_checks/client.py | 69 +- .../cloud/compute_v1/services/hosts/client.py | 29 +- .../services/image_family_views/client.py | 14 +- .../services/image_views/__init__.py | 18 + .../compute_v1/services/image_views/client.py | 882 ++ .../compute_v1/services/image_views/pagers.py | 117 + .../image_views/transports/README.rst | 10 + .../image_views/transports/__init__.py | 30 + .../services/image_views/transports/base.py | 213 + .../services/image_views/transports/rest.py | 592 + .../image_views/transports/rest_base.py | 123 + .../compute_v1/services/images/client.py | 89 +- .../client.py | 49 +- .../instance_group_managers/client.py | 219 +- .../services/instance_groups/client.py | 84 +- .../instance_settings_service/client.py | 24 +- .../services/instance_templates/client.py | 59 +- .../compute_v1/services/instances/client.py | 454 +- .../instant_snapshot_groups/client.py | 54 +- .../services/instant_snapshots/client.py | 69 +- .../interconnect_attachment_groups/client.py | 69 +- .../interconnect_attachments/client.py | 64 +- .../services/interconnect_groups/client.py | 79 +- .../services/interconnect_locations/client.py | 19 +- .../interconnect_remote_locations/client.py | 19 +- .../services/interconnects/client.py | 377 +- .../services/interconnects/transports/base.py | 14 + .../services/interconnects/transports/rest.py | 237 + .../interconnects/transports/rest_base.py | 17 + .../services/license_codes/client.py | 29 +- .../compute_v1/services/licenses/client.py | 64 +- .../services/machine_images/client.py | 64 +- .../services/machine_types/client.py | 24 +- .../services/managed_rulesets/__init__.py | 18 + .../services/managed_rulesets/client.py | 859 ++ .../services/managed_rulesets/pagers.py | 117 + .../managed_rulesets/transports/README.rst | 10 + .../managed_rulesets/transports/__init__.py | 30 + .../managed_rulesets/transports/base.py | 211 + .../managed_rulesets/transports/rest.py | 607 + .../managed_rulesets/transports/rest_base.py | 123 + .../services/network_attachments/client.py | 69 +- .../network_edge_security_services/client.py | 49 +- .../network_endpoint_groups/client.py | 74 +- .../network_firewall_policies/client.py | 174 +- .../services/network_profiles/client.py | 19 +- .../compute_v1/services/networks/client.py | 119 +- .../compute_v1/services/node_groups/client.py | 124 +- .../services/node_templates/client.py | 59 +- .../compute_v1/services/node_types/client.py | 24 +- .../organization_security_policies/client.py | 139 +- .../services/packet_mirrorings/client.py | 59 +- .../services/preview_features/client.py | 29 +- .../services/project_views/client.py | 14 +- .../compute_v1/services/projects/client.py | 129 +- .../public_advertised_prefixes/client.py | 69 +- .../public_delegated_prefixes/client.py | 74 +- .../services/region_autoscalers/client.py | 64 +- .../services/region_backend_buckets/client.py | 69 +- .../region_backend_services/client.py | 94 +- .../services/region_commitments/client.py | 44 +- .../region_composite_health_checks/client.py | 64 +- .../services/region_disk_types/client.py | 19 +- .../services/region_disks/client.py | 164 +- .../client.py | 59 +- .../region_health_check_services/client.py | 59 +- .../services/region_health_checks/client.py | 64 +- .../services/region_health_sources/client.py | 64 +- .../client.py | 49 +- .../region_instance_group_managers/client.py | 214 +- .../services/region_instance_groups/client.py | 39 +- .../region_instance_templates/client.py | 39 +- .../services/region_instances/client.py | 19 +- .../region_instant_snapshot_groups/client.py | 54 +- .../region_instant_snapshots/client.py | 64 +- .../region_network_endpoint_groups/client.py | 64 +- .../client.py | 492 +- .../transports/base.py | 14 + .../transports/rest.py | 243 + .../transports/rest_base.py | 17 + .../region_notification_endpoints/client.py | 49 +- .../services/region_operations/client.py | 29 +- .../region_security_policies/client.py | 94 +- .../region_snapshot_settings/client.py | 24 +- .../services/region_snapshots/client.py | 74 +- .../region_ssl_certificates/client.py | 39 +- .../services/region_ssl_policies/client.py | 54 +- .../region_target_http_proxies/client.py | 49 +- .../region_target_https_proxies/client.py | 69 +- .../region_target_tcp_proxies/client.py | 39 +- .../services/region_url_maps/client.py | 64 +- .../services/region_zones/client.py | 14 +- .../compute_v1/services/regions/client.py | 19 +- .../services/reliability_risks/client.py | 19 +- .../services/reservation_blocks/client.py | 44 +- .../services/reservation_slots/client.py | 49 +- .../services/reservation_sub_blocks/client.py | 64 +- .../services/reservations/client.py | 89 +- .../services/resource_policies/client.py | 69 +- .../services/rollout_plans/client.py | 39 +- .../compute_v1/services/rollouts/client.py | 69 +- .../compute_v1/services/routers/client.py | 169 +- .../compute_v1/services/routes/client.py | 44 +- .../services/security_policies/client.py | 104 +- .../services/service_attachments/client.py | 69 +- .../snapshot_settings_service/client.py | 24 +- .../compute_v1/services/snapshots/client.py | 74 +- .../services/ssl_certificates/client.py | 44 +- .../services/ssl_policies/client.py | 59 +- .../services/storage_pool_types/client.py | 24 +- .../services/storage_pools/client.py | 74 +- .../compute_v1/services/subnetworks/client.py | 94 +- .../services/target_grpc_proxies/client.py | 49 +- .../services/target_http_proxies/client.py | 64 +- .../services/target_https_proxies/client.py | 104 +- .../services/target_instances/client.py | 59 +- .../services/target_pools/client.py | 114 +- .../services/target_ssl_proxies/client.py | 94 +- .../services/target_tcp_proxies/client.py | 69 +- .../services/target_vpn_gateways/client.py | 54 +- .../compute_v1/services/url_maps/client.py | 84 +- .../services/vpn_gateways/client.py | 64 +- .../compute_v1/services/vpn_tunnels/client.py | 54 +- .../compute_v1/services/wire_groups/client.py | 49 +- .../services/zone_operations/client.py | 29 +- .../zone_vm_extension_policies/client.py | 49 +- .../cloud/compute_v1/services/zones/client.py | 19 +- .../google/cloud/compute_v1/types/__init__.py | 32 + .../google/cloud/compute_v1/types/compute.py | 6458 +++------ ...generated_firewall_policies_insert_sync.py | 4 +- ...1_generated_firewall_policies_move_sync.py | 1 - ...obal_frontend_settings_service_get_sync.py | 53 + ...al_frontend_settings_service_patch_sync.py | 53 + ...mpute_v1_generated_image_views_get_sync.py | 55 + ...pute_v1_generated_image_views_list_sync.py | 55 + ...1_generated_interconnects_set_name_sync.py | 54 + ..._v1_generated_managed_rulesets_get_sync.py | 54 + ...v1_generated_managed_rulesets_list_sync.py | 54 + ...irewall_policies_patch_association_sync.py | 55 + ...ppet_metadata_google.cloud.compute.v1.json | 824 +- .../compute_v1/test_accelerator_types.py | 111 +- .../unit/gapic/compute_v1/test_addresses.py | 278 +- .../unit/gapic/compute_v1/test_advice.py | 130 +- .../unit/gapic/compute_v1/test_autoscalers.py | 278 +- .../gapic/compute_v1/test_backend_buckets.py | 510 +- .../gapic/compute_v1/test_backend_services.py | 615 +- .../compute_v1/test_cross_site_networks.py | 174 +- .../unit/gapic/compute_v1/test_disk_types.py | 111 +- .../tests/unit/gapic/compute_v1/test_disks.py | 717 +- .../compute_v1/test_external_vpn_gateways.py | 209 +- .../compute_v1/test_firewall_policies.py | 710 +- .../unit/gapic/compute_v1/test_firewalls.py | 242 +- .../gapic/compute_v1/test_forwarding_rules.py | 276 +- .../compute_v1/test_future_reservations.py | 247 +- .../gapic/compute_v1/test_global_addresses.py | 242 +- .../test_global_forwarding_rules.py | 240 +- .../test_global_frontend_settings_service.py | 2216 +++ .../test_global_network_endpoint_groups.py | 247 +- .../compute_v1/test_global_operations.py | 177 +- .../test_global_organization_operations.py | 107 + .../test_global_public_delegated_prefixes.py | 174 +- .../test_global_vm_extension_policies.py | 210 +- .../gapic/compute_v1/test_health_checks.py | 278 +- .../tests/unit/gapic/compute_v1/test_hosts.py | 108 +- .../compute_v1/test_image_family_views.py | 41 + .../unit/gapic/compute_v1/test_image_views.py | 2141 +++ .../unit/gapic/compute_v1/test_images.py | 403 +- ..._instance_group_manager_resize_requests.py | 174 +- .../test_instance_group_managers.py | 843 +- .../gapic/compute_v1/test_instance_groups.py | 353 +- .../test_instance_settings_service.py | 74 + .../compute_v1/test_instance_templates.py | 305 +- .../unit/gapic/compute_v1/test_instances.py | 1941 ++- .../test_instant_snapshot_groups.py | 269 +- .../compute_v1/test_instant_snapshots.py | 338 +- .../test_interconnect_attachment_groups.py | 339 +- .../test_interconnect_attachments.py | 243 +- .../compute_v1/test_interconnect_groups.py | 372 +- .../compute_v1/test_interconnect_locations.py | 75 +- .../test_interconnect_remote_locations.py | 75 +- .../gapic/compute_v1/test_interconnects.py | 1149 +- .../gapic/compute_v1/test_license_codes.py | 169 +- .../unit/gapic/compute_v1/test_licenses.py | 302 +- .../gapic/compute_v1/test_machine_images.py | 302 +- .../gapic/compute_v1/test_machine_types.py | 111 +- .../gapic/compute_v1/test_managed_rulesets.py | 2156 +++ .../compute_v1/test_network_attachments.py | 338 +- .../test_network_edge_security_services.py | 176 +- .../test_network_endpoint_groups.py | 318 +- .../test_network_firewall_policies.py | 753 +- .../gapic/compute_v1/test_network_profiles.py | 77 +- .../unit/gapic/compute_v1/test_networks.py | 453 +- .../unit/gapic/compute_v1/test_node_groups.py | 543 +- .../gapic/compute_v1/test_node_templates.py | 305 +- .../unit/gapic/compute_v1/test_node_types.py | 111 +- .../test_organization_security_policies.py | 562 +- .../compute_v1/test_packet_mirrorings.py | 245 +- .../gapic/compute_v1/test_preview_features.py | 108 +- .../gapic/compute_v1/test_project_views.py | 41 + .../unit/gapic/compute_v1/test_projects.py | 494 +- .../test_public_advertised_prefixes.py | 240 +- .../test_public_delegated_prefixes.py | 276 +- .../compute_v1/test_region_autoscalers.py | 242 +- .../compute_v1/test_region_backend_buckets.py | 336 +- .../test_region_backend_services.py | 437 +- .../compute_v1/test_region_commitments.py | 177 +- .../test_region_composite_health_checks.py | 278 +- .../compute_v1/test_region_disk_types.py | 75 +- .../gapic/compute_v1/test_region_disks.py | 646 +- ...test_region_health_aggregation_policies.py | 245 +- .../test_region_health_check_services.py | 245 +- .../compute_v1/test_region_health_checks.py | 242 +- .../compute_v1/test_region_health_sources.py | 278 +- ..._instance_group_manager_resize_requests.py | 176 +- .../test_region_instance_group_managers.py | 807 +- .../compute_v1/test_region_instance_groups.py | 181 +- .../test_region_instance_templates.py | 141 +- .../gapic/compute_v1/test_region_instances.py | 41 + .../test_region_instant_snapshot_groups.py | 269 +- .../test_region_instant_snapshots.py | 302 +- .../test_region_network_endpoint_groups.py | 247 +- .../test_region_network_firewall_policies.py | 3740 +++-- .../test_region_notification_endpoints.py | 212 +- .../compute_v1/test_region_operations.py | 141 +- .../test_region_security_policies.py | 351 +- .../test_region_snapshot_settings.py | 74 + .../gapic/compute_v1/test_region_snapshots.py | 337 +- .../test_region_ssl_certificates.py | 141 +- .../compute_v1/test_region_ssl_policies.py | 210 +- .../test_region_target_http_proxies.py | 174 +- .../test_region_target_https_proxies.py | 242 +- .../test_region_target_tcp_proxies.py | 141 +- .../gapic/compute_v1/test_region_url_maps.py | 240 +- .../gapic/compute_v1/test_region_zones.py | 42 +- .../unit/gapic/compute_v1/test_regions.py | 75 +- .../compute_v1/test_reliability_risks.py | 75 +- .../compute_v1/test_reservation_blocks.py | 238 +- .../compute_v1/test_reservation_slots.py | 174 +- .../compute_v1/test_reservation_sub_blocks.py | 306 +- .../gapic/compute_v1/test_reservations.py | 406 +- .../compute_v1/test_resource_policies.py | 338 +- .../gapic/compute_v1/test_rollout_plans.py | 141 +- .../unit/gapic/compute_v1/test_rollouts.py | 240 +- .../unit/gapic/compute_v1/test_routers.py | 770 +- .../unit/gapic/compute_v1/test_routes.py | 176 +- .../compute_v1/test_security_policies.py | 425 +- .../compute_v1/test_service_attachments.py | 338 +- .../test_snapshot_settings_service.py | 74 + .../unit/gapic/compute_v1/test_snapshots.py | 337 +- .../gapic/compute_v1/test_ssl_certificates.py | 177 +- .../gapic/compute_v1/test_ssl_policies.py | 246 +- .../compute_v1/test_storage_pool_types.py | 111 +- .../gapic/compute_v1/test_storage_pools.py | 372 +- .../unit/gapic/compute_v1/test_subnetworks.py | 442 +- .../compute_v1/test_target_grpc_proxies.py | 174 +- .../compute_v1/test_target_http_proxies.py | 243 +- .../compute_v1/test_target_https_proxies.py | 383 +- .../gapic/compute_v1/test_target_instances.py | 247 +- .../gapic/compute_v1/test_target_pools.py | 451 +- .../compute_v1/test_target_ssl_proxies.py | 351 +- .../compute_v1/test_target_tcp_proxies.py | 282 +- .../compute_v1/test_target_vpn_gateways.py | 210 +- .../unit/gapic/compute_v1/test_url_maps.py | 346 +- .../gapic/compute_v1/test_vpn_gateways.py | 278 +- .../unit/gapic/compute_v1/test_vpn_tunnels.py | 210 +- .../unit/gapic/compute_v1/test_wire_groups.py | 174 +- .../gapic/compute_v1/test_zone_operations.py | 141 +- .../test_zone_vm_extension_policies.py | 174 +- .../tests/unit/gapic/compute_v1/test_zones.py | 75 +- .../google/cloud/dataform/__init__.py | 2 + .../google/cloud/dataform_v1/__init__.py | 2 + .../cloud/dataform_v1/types/__init__.py | 2 + .../cloud/dataform_v1/types/dataform.py | 72 + .../google/cloud/dataform_v1beta1/__init__.py | 2 + .../cloud/dataform_v1beta1/types/__init__.py | 2 + .../cloud/dataform_v1beta1/types/dataform.py | 72 + .../unit/gapic/dataform_v1/test_dataform.py | 43 + .../gapic/dataform_v1beta1/test_dataform.py | 43 + .../docs/dialogflow_v2/companion_agents.rst | 10 + .../docs/dialogflow_v2/services_.rst | 1 + .../google/cloud/dialogflow/__init__.py | 56 + .../google/cloud/dialogflow_v2/__init__.py | 54 + .../cloud/dialogflow_v2/gapic_metadata.json | 124 + .../services/companion_agents/__init__.py | 22 + .../services/companion_agents/async_client.py | 1216 ++ .../services/companion_agents/client.py | 1562 +++ .../services/companion_agents/pagers.py | 197 + .../companion_agents/transports/README.rst | 10 + .../companion_agents/transports/__init__.py | 36 + .../companion_agents/transports/base.py | 323 + .../companion_agents/transports/grpc.py | 570 + .../transports/grpc_asyncio.py | 641 + .../companion_agents/transports/rest.py | 1998 +++ .../companion_agents/transports/rest_base.py | 259 + .../conversation_profiles/async_client.py | 4 + .../services/conversation_profiles/client.py | 22 + .../services/conversations/async_client.py | 6 +- .../services/conversations/client.py | 24 +- .../services/participants/async_client.py | 191 +- .../services/participants/client.py | 189 +- .../services/participants/transports/base.py | 34 + .../services/participants/transports/grpc.py | 65 + .../participants/transports/grpc_asyncio.py | 75 + .../services/participants/transports/rest.py | 66 + .../participants/transports/rest_base.py | 8 + .../cloud/dialogflow_v2/types/__init__.py | 48 + .../dialogflow_v2/types/answer_record.py | 31 + .../cloud/dialogflow_v2/types/audio_config.py | 124 + .../cloud/dialogflow_v2/types/ces_app.py | 4 +- .../dialogflow_v2/types/companion_agent.py | 479 + .../cloud/dialogflow_v2/types/conversation.py | 3 +- .../types/conversation_profile.py | 17 +- .../cloud/dialogflow_v2/types/generator.py | 4 +- .../cloud/dialogflow_v2/types/grounding.py | 256 + .../cloud/dialogflow_v2/types/participant.py | 814 +- .../cloud/dialogflow_v2/types/session.py | 8 +- .../cloud/dialogflow_v2/types/tool_call.py | 7 + ...ion_agents_create_companion_agent_async.py | 53 + ...nion_agents_create_companion_agent_sync.py | 53 + ...ion_agents_delete_companion_agent_async.py | 50 + ...nion_agents_delete_companion_agent_sync.py | 50 + ...panion_agents_get_companion_agent_async.py | 53 + ...mpanion_agents_get_companion_agent_sync.py | 53 + ...nion_agents_list_companion_agents_async.py | 54 + ...anion_agents_list_companion_agents_sync.py | 54 + ...ion_agents_update_companion_agent_async.py | 51 + ...nion_agents_update_companion_agent_sync.py | 51 + ...ations_generate_stateless_summary_async.py | 1 - ...sations_generate_stateless_summary_sync.py | 1 - ...ed_conversations_search_knowledge_async.py | 1 - ...ted_conversations_search_knowledge_sync.py | 1 - ...ated_participants_analyze_content_async.py | 1 - ...rated_participants_analyze_content_sync.py | 1 - ...ts_bidi_streaming_analyze_content_async.py | 71 + ...nts_bidi_streaming_analyze_content_sync.py | 71 + ...ng_reactive_companion_suggestions_async.py | 67 + ...ing_reactive_companion_suggestions_sync.py | 67 + ...t_metadata_google.cloud.dialogflow.v2.json | 1359 +- .../dialogflow_v2/test_answer_records.py | 74 +- .../dialogflow_v2/test_companion_agents.py | 7349 ++++++++++ .../test_conversation_profiles.py | 144 +- .../gapic/dialogflow_v2/test_conversations.py | 201 +- .../test_generator_evaluations.py | 5 +- .../gapic/dialogflow_v2/test_generators.py | 10 +- .../gapic/dialogflow_v2/test_participants.py | 413 + .../cloud/retail_v2alpha/types/catalog.py | 8 + .../retail_v2alpha/test_catalog_service.py | 15 + .../health_v4/types/data_model.py | 159 +- .../health_v4/types/data_points.py | 63 +- .../health_v4/types/health_profile.py | 28 +- .../health_v4/test_data_points_service.py | 2 + .../types/products_common.py | 396 +- .../test_product_inputs_service.py | 46 +- ...elerator_interconnect_member_instances.rst | 10 + .../compute_v1/accelerator_interconnects.rst | 10 + .../global_frontend_settings_service.rst | 6 + .../docs/compute_v1/ha_controllers.rst | 10 + .../docs/compute_v1/image_views.rst | 10 + .../docs/compute_v1/managed_rulesets.rst | 10 + .../docs/compute_v1/services_.rst | 6 + .../google/cloud/compute/__init__.py | 154 +- .../google/cloud/compute_v1/__init__.py | 156 +- .../cloud/compute_v1/gapic_metadata.json | 291 + .../__init__.py | 18 + .../client.py | 784 ++ .../pagers.py | 123 + .../transports/README.rst | 10 + .../transports/__init__.py | 33 + .../transports/base.py | 190 + .../transports/rest.py | 418 + .../transports/rest_base.py | 109 + .../accelerator_interconnects/__init__.py | 18 + .../accelerator_interconnects/client.py | 1695 +++ .../accelerator_interconnects/pagers.py | 193 + .../transports/README.rst | 10 + .../transports/__init__.py | 33 + .../transports/base.py | 274 + .../transports/rest.py | 1326 ++ .../transports/rest_base.py | 173 + .../services/accelerator_types/client.py | 27 +- .../accelerator_types/transports/rest.py | 2 - .../compute_v1/services/addresses/client.py | 69 +- .../compute_v1/services/advice/client.py | 24 +- .../compute_v1/services/autoscalers/client.py | 69 +- .../services/backend_buckets/client.py | 114 +- .../services/backend_services/client.py | 134 +- .../services/cross_site_networks/client.py | 49 +- .../compute_v1/services/disk_types/client.py | 24 +- .../cloud/compute_v1/services/disks/client.py | 179 +- .../services/external_vpn_gateways/client.py | 54 +- .../services/firewall_policies/client.py | 149 +- .../compute_v1/services/firewalls/client.py | 64 +- .../services/forwarding_rules/client.py | 74 +- .../services/future_reservations/client.py | 64 +- .../services/global_addresses/client.py | 64 +- .../global_forwarding_rules/client.py | 69 +- .../__init__.py | 18 + .../client.py | 852 ++ .../transports/README.rst | 10 + .../transports/__init__.py | 33 + .../transports/base.py | 205 + .../transports/rest.py | 626 + .../transports/rest_base.py | 126 + .../global_network_endpoint_groups/client.py | 64 +- .../services/global_operations/client.py | 34 +- .../global_organization_operations/client.py | 24 +- .../client.py | 49 +- .../global_vm_extension_policies/client.py | 54 +- .../services/ha_controllers/__init__.py | 18 + .../services/ha_controllers/client.py | 2254 +++ .../services/ha_controllers/pagers.py | 196 + .../ha_controllers/transports/README.rst | 10 + .../ha_controllers/transports/__init__.py | 30 + .../ha_controllers/transports/base.py | 307 + .../ha_controllers/transports/rest.py | 1758 +++ .../ha_controllers/transports/rest_base.py | 206 + .../services/health_checks/client.py | 69 +- .../cloud/compute_v1/services/hosts/client.py | 29 +- .../services/image_family_views/client.py | 14 +- .../services/image_views/__init__.py | 18 + .../compute_v1/services/image_views/client.py | 882 ++ .../compute_v1/services/image_views/pagers.py | 117 + .../image_views/transports/README.rst | 10 + .../image_views/transports/__init__.py | 30 + .../services/image_views/transports/base.py | 213 + .../services/image_views/transports/rest.py | 592 + .../image_views/transports/rest_base.py | 123 + .../compute_v1/services/images/client.py | 89 +- .../client.py | 49 +- .../instance_group_managers/client.py | 219 +- .../services/instance_groups/client.py | 84 +- .../instance_settings_service/client.py | 24 +- .../services/instance_templates/client.py | 59 +- .../compute_v1/services/instances/client.py | 454 +- .../instant_snapshot_groups/client.py | 54 +- .../services/instant_snapshots/client.py | 69 +- .../interconnect_attachment_groups/client.py | 69 +- .../interconnect_attachments/client.py | 64 +- .../services/interconnect_groups/client.py | 79 +- .../services/interconnect_locations/client.py | 19 +- .../interconnect_remote_locations/client.py | 19 +- .../services/interconnects/client.py | 377 +- .../services/interconnects/transports/base.py | 14 + .../services/interconnects/transports/rest.py | 237 + .../interconnects/transports/rest_base.py | 17 + .../services/license_codes/client.py | 29 +- .../compute_v1/services/licenses/client.py | 64 +- .../services/machine_images/client.py | 64 +- .../services/machine_types/client.py | 24 +- .../services/managed_rulesets/__init__.py | 18 + .../services/managed_rulesets/client.py | 859 ++ .../services/managed_rulesets/pagers.py | 117 + .../managed_rulesets/transports/README.rst | 10 + .../managed_rulesets/transports/__init__.py | 30 + .../managed_rulesets/transports/base.py | 211 + .../managed_rulesets/transports/rest.py | 607 + .../managed_rulesets/transports/rest_base.py | 123 + .../services/network_attachments/client.py | 69 +- .../network_edge_security_services/client.py | 49 +- .../network_endpoint_groups/client.py | 74 +- .../network_firewall_policies/client.py | 174 +- .../services/network_profiles/client.py | 19 +- .../compute_v1/services/networks/client.py | 119 +- .../compute_v1/services/node_groups/client.py | 124 +- .../services/node_templates/client.py | 59 +- .../compute_v1/services/node_types/client.py | 24 +- .../organization_security_policies/client.py | 139 +- .../services/packet_mirrorings/client.py | 59 +- .../services/preview_features/client.py | 29 +- .../services/project_views/client.py | 14 +- .../compute_v1/services/projects/client.py | 129 +- .../public_advertised_prefixes/client.py | 69 +- .../public_delegated_prefixes/client.py | 74 +- .../services/region_autoscalers/client.py | 64 +- .../services/region_backend_buckets/client.py | 69 +- .../region_backend_services/client.py | 94 +- .../services/region_commitments/client.py | 44 +- .../region_composite_health_checks/client.py | 64 +- .../services/region_disk_types/client.py | 19 +- .../services/region_disks/client.py | 164 +- .../client.py | 59 +- .../region_health_check_services/client.py | 59 +- .../services/region_health_checks/client.py | 64 +- .../services/region_health_sources/client.py | 64 +- .../client.py | 49 +- .../region_instance_group_managers/client.py | 214 +- .../services/region_instance_groups/client.py | 39 +- .../region_instance_templates/client.py | 39 +- .../services/region_instances/client.py | 19 +- .../region_instant_snapshot_groups/client.py | 54 +- .../region_instant_snapshots/client.py | 64 +- .../region_network_endpoint_groups/client.py | 64 +- .../client.py | 492 +- .../transports/base.py | 14 + .../transports/rest.py | 243 + .../transports/rest_base.py | 17 + .../region_notification_endpoints/client.py | 49 +- .../services/region_operations/client.py | 29 +- .../region_security_policies/client.py | 94 +- .../region_snapshot_settings/client.py | 24 +- .../services/region_snapshots/client.py | 74 +- .../region_ssl_certificates/client.py | 39 +- .../services/region_ssl_policies/client.py | 54 +- .../region_target_http_proxies/client.py | 49 +- .../region_target_https_proxies/client.py | 69 +- .../region_target_tcp_proxies/client.py | 39 +- .../services/region_url_maps/client.py | 64 +- .../services/region_zones/client.py | 14 +- .../compute_v1/services/regions/client.py | 19 +- .../services/reliability_risks/client.py | 19 +- .../services/reservation_blocks/client.py | 44 +- .../services/reservation_slots/client.py | 49 +- .../services/reservation_sub_blocks/client.py | 64 +- .../services/reservations/client.py | 89 +- .../services/resource_policies/client.py | 69 +- .../services/rollout_plans/client.py | 39 +- .../compute_v1/services/rollouts/client.py | 69 +- .../compute_v1/services/routers/client.py | 169 +- .../compute_v1/services/routes/client.py | 44 +- .../services/security_policies/client.py | 104 +- .../services/service_attachments/client.py | 69 +- .../snapshot_settings_service/client.py | 24 +- .../compute_v1/services/snapshots/client.py | 74 +- .../services/ssl_certificates/client.py | 44 +- .../services/ssl_policies/client.py | 59 +- .../services/storage_pool_types/client.py | 24 +- .../services/storage_pools/client.py | 74 +- .../compute_v1/services/subnetworks/client.py | 94 +- .../services/target_grpc_proxies/client.py | 49 +- .../services/target_http_proxies/client.py | 64 +- .../services/target_https_proxies/client.py | 104 +- .../services/target_instances/client.py | 59 +- .../services/target_pools/client.py | 114 +- .../services/target_ssl_proxies/client.py | 94 +- .../services/target_tcp_proxies/client.py | 69 +- .../services/target_vpn_gateways/client.py | 54 +- .../compute_v1/services/url_maps/client.py | 84 +- .../services/vpn_gateways/client.py | 64 +- .../compute_v1/services/vpn_tunnels/client.py | 54 +- .../compute_v1/services/wire_groups/client.py | 49 +- .../services/zone_operations/client.py | 29 +- .../zone_vm_extension_policies/client.py | 49 +- .../cloud/compute_v1/services/zones/client.py | 19 +- .../google/cloud/compute_v1/types/__init__.py | 134 +- .../google/cloud/compute_v1/types/compute.py | 11307 +++++++++------- ...interconnect_member_instances_list_sync.py | 56 + ...d_accelerator_interconnects_delete_sync.py | 55 + ...ated_accelerator_interconnects_get_sync.py | 55 + ...d_accelerator_interconnects_insert_sync.py | 54 + ...ted_accelerator_interconnects_list_sync.py | 55 + ...or_interconnects_query_formability_sync.py | 55 + ...obal_frontend_settings_service_get_sync.py | 53 + ...al_frontend_settings_service_patch_sync.py | 53 + ...ted_ha_controllers_aggregated_list_sync.py | 54 + ...v1_generated_ha_controllers_delete_sync.py | 55 + ..._generated_ha_controllers_failover_sync.py | 55 + ...te_v1_generated_ha_controllers_get_sync.py | 55 + ...v1_generated_ha_controllers_insert_sync.py | 54 + ...e_v1_generated_ha_controllers_list_sync.py | 55 + ..._v1_generated_ha_controllers_patch_sync.py | 55 + ...mpute_v1_generated_image_views_get_sync.py | 55 + ...pute_v1_generated_image_views_list_sync.py | 55 + ...1_generated_interconnects_set_name_sync.py | 54 + ..._v1_generated_managed_rulesets_get_sync.py | 54 + ...v1_generated_managed_rulesets_list_sync.py | 54 + ...irewall_policies_patch_association_sync.py | 55 + ...ppet_metadata_google.cloud.compute.v1.json | 10498 ++++++++------ ...celerator_interconnect_member_instances.py | 1911 +++ .../test_accelerator_interconnects.py | 4148 ++++++ .../compute_v1/test_accelerator_types.py | 111 +- .../unit/gapic/compute_v1/test_addresses.py | 278 +- .../unit/gapic/compute_v1/test_advice.py | 130 +- .../unit/gapic/compute_v1/test_autoscalers.py | 284 +- .../gapic/compute_v1/test_backend_buckets.py | 487 +- .../gapic/compute_v1/test_backend_services.py | 592 +- .../compute_v1/test_cross_site_networks.py | 174 +- .../unit/gapic/compute_v1/test_disk_types.py | 111 +- .../tests/unit/gapic/compute_v1/test_disks.py | 694 +- .../compute_v1/test_external_vpn_gateways.py | 209 +- .../compute_v1/test_firewall_policies.py | 621 + .../unit/gapic/compute_v1/test_firewalls.py | 242 +- .../gapic/compute_v1/test_forwarding_rules.py | 276 +- .../compute_v1/test_future_reservations.py | 247 +- .../gapic/compute_v1/test_global_addresses.py | 242 +- .../test_global_forwarding_rules.py | 240 +- .../test_global_frontend_settings_service.py | 2216 +++ .../test_global_network_endpoint_groups.py | 247 +- .../compute_v1/test_global_operations.py | 177 +- .../test_global_organization_operations.py | 107 + .../test_global_public_delegated_prefixes.py | 174 +- .../test_global_vm_extension_policies.py | 210 +- .../gapic/compute_v1/test_ha_controllers.py | 5506 ++++++++ .../gapic/compute_v1/test_health_checks.py | 278 +- .../tests/unit/gapic/compute_v1/test_hosts.py | 108 +- .../compute_v1/test_image_family_views.py | 41 + .../unit/gapic/compute_v1/test_image_views.py | 2141 +++ .../unit/gapic/compute_v1/test_images.py | 380 +- ..._instance_group_manager_resize_requests.py | 174 +- .../test_instance_group_managers.py | 843 +- .../gapic/compute_v1/test_instance_groups.py | 353 +- .../test_instance_settings_service.py | 74 + .../compute_v1/test_instance_templates.py | 282 +- .../unit/gapic/compute_v1/test_instances.py | 1932 ++- .../test_instant_snapshot_groups.py | 246 +- .../compute_v1/test_instant_snapshots.py | 315 +- .../test_interconnect_attachment_groups.py | 316 +- .../test_interconnect_attachments.py | 243 +- .../compute_v1/test_interconnect_groups.py | 349 +- .../compute_v1/test_interconnect_locations.py | 75 +- .../test_interconnect_remote_locations.py | 75 +- .../gapic/compute_v1/test_interconnects.py | 1149 +- .../gapic/compute_v1/test_license_codes.py | 146 + .../unit/gapic/compute_v1/test_licenses.py | 279 +- .../gapic/compute_v1/test_machine_images.py | 279 +- .../gapic/compute_v1/test_machine_types.py | 111 +- .../gapic/compute_v1/test_managed_rulesets.py | 2156 +++ .../compute_v1/test_network_attachments.py | 315 +- .../test_network_edge_security_services.py | 178 +- .../test_network_endpoint_groups.py | 318 +- .../test_network_firewall_policies.py | 730 +- .../gapic/compute_v1/test_network_profiles.py | 75 +- .../unit/gapic/compute_v1/test_networks.py | 453 +- .../unit/gapic/compute_v1/test_node_groups.py | 520 +- .../gapic/compute_v1/test_node_templates.py | 282 +- .../unit/gapic/compute_v1/test_node_types.py | 111 +- .../test_organization_security_policies.py | 564 +- .../compute_v1/test_packet_mirrorings.py | 245 +- .../gapic/compute_v1/test_preview_features.py | 108 +- .../gapic/compute_v1/test_project_views.py | 41 + .../unit/gapic/compute_v1/test_projects.py | 494 +- .../test_public_advertised_prefixes.py | 240 +- .../test_public_delegated_prefixes.py | 276 +- .../compute_v1/test_region_autoscalers.py | 248 +- .../compute_v1/test_region_backend_buckets.py | 313 +- .../test_region_backend_services.py | 414 +- .../compute_v1/test_region_commitments.py | 179 +- .../test_region_composite_health_checks.py | 278 +- .../compute_v1/test_region_disk_types.py | 75 +- .../gapic/compute_v1/test_region_disks.py | 623 +- ...test_region_health_aggregation_policies.py | 245 +- .../test_region_health_check_services.py | 245 +- .../compute_v1/test_region_health_checks.py | 242 +- .../compute_v1/test_region_health_sources.py | 278 +- ..._instance_group_manager_resize_requests.py | 176 +- .../test_region_instance_group_managers.py | 807 +- .../compute_v1/test_region_instance_groups.py | 181 +- .../test_region_instance_templates.py | 141 +- .../gapic/compute_v1/test_region_instances.py | 41 + .../test_region_instant_snapshot_groups.py | 246 +- .../test_region_instant_snapshots.py | 279 +- .../test_region_network_endpoint_groups.py | 247 +- .../test_region_network_firewall_policies.py | 3727 +++-- .../test_region_notification_endpoints.py | 212 +- .../compute_v1/test_region_operations.py | 141 +- .../test_region_security_policies.py | 353 +- .../test_region_snapshot_settings.py | 74 + .../gapic/compute_v1/test_region_snapshots.py | 314 +- .../test_region_ssl_certificates.py | 142 +- .../compute_v1/test_region_ssl_policies.py | 210 +- .../test_region_target_http_proxies.py | 174 +- .../test_region_target_https_proxies.py | 242 +- .../test_region_target_tcp_proxies.py | 141 +- .../gapic/compute_v1/test_region_url_maps.py | 240 +- .../gapic/compute_v1/test_region_zones.py | 42 +- .../unit/gapic/compute_v1/test_regions.py | 75 +- .../compute_v1/test_reliability_risks.py | 75 +- .../compute_v1/test_reservation_blocks.py | 215 +- .../compute_v1/test_reservation_slots.py | 174 +- .../compute_v1/test_reservation_sub_blocks.py | 283 +- .../gapic/compute_v1/test_reservations.py | 385 +- .../compute_v1/test_resource_policies.py | 315 +- .../gapic/compute_v1/test_rollout_plans.py | 141 +- .../unit/gapic/compute_v1/test_rollouts.py | 240 +- .../unit/gapic/compute_v1/test_routers.py | 770 +- .../unit/gapic/compute_v1/test_routes.py | 176 +- .../compute_v1/test_security_policies.py | 427 +- .../compute_v1/test_service_attachments.py | 315 +- .../test_snapshot_settings_service.py | 74 + .../unit/gapic/compute_v1/test_snapshots.py | 314 +- .../gapic/compute_v1/test_ssl_certificates.py | 178 +- .../gapic/compute_v1/test_ssl_policies.py | 246 +- .../compute_v1/test_storage_pool_types.py | 111 +- .../gapic/compute_v1/test_storage_pools.py | 349 +- .../unit/gapic/compute_v1/test_subnetworks.py | 419 +- .../compute_v1/test_target_grpc_proxies.py | 174 +- .../compute_v1/test_target_http_proxies.py | 243 +- .../compute_v1/test_target_https_proxies.py | 383 +- .../gapic/compute_v1/test_target_instances.py | 247 +- .../gapic/compute_v1/test_target_pools.py | 451 +- .../compute_v1/test_target_ssl_proxies.py | 351 +- .../compute_v1/test_target_tcp_proxies.py | 282 +- .../compute_v1/test_target_vpn_gateways.py | 210 +- .../unit/gapic/compute_v1/test_url_maps.py | 346 +- .../gapic/compute_v1/test_vpn_gateways.py | 278 +- .../unit/gapic/compute_v1/test_vpn_tunnels.py | 210 +- .../unit/gapic/compute_v1/test_wire_groups.py | 176 +- .../gapic/compute_v1/test_zone_operations.py | 141 +- .../test_zone_vm_extension_policies.py | 174 +- .../tests/unit/gapic/compute_v1/test_zones.py | 75 +- 794 files changed, 184971 insertions(+), 18821 deletions(-) create mode 100644 packages/google-ads-datamanager/google/ads/datamanager_v1/types/user.py create mode 100644 packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_async.py create mode 100644 packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_sync.py create mode 100644 packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_async.py create mode 100644 packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_sync.py create mode 100644 packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/pagers.py create mode 100644 packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_image_views_list_sync.py create mode 100644 packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst create mode 100644 packages/google-cloud-compute/docs/compute_v1/image_views.rst create mode 100644 packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py create mode 100644 packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py create mode 100644 packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py create mode 100644 packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py create mode 100644 packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py create mode 100644 packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py create mode 100644 packages/google-cloud-dialogflow/docs/dialogflow_v2/companion_agents.rst create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/__init__.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/async_client.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/client.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/pagers.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/README.rst create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/__init__.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/base.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc_asyncio.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest_base.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/companion_agent.py create mode 100644 packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/grounding.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_sync.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_sync.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_sync.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_sync.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_sync.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_sync.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_async.py create mode 100644 packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_sync.py create mode 100644 packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_companion_agents.py create mode 100644 preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnect_member_instances.rst create mode 100644 preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnects.rst create mode 100644 preview-packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst create mode 100644 preview-packages/google-cloud-compute/docs/compute_v1/ha_controllers.rst create mode 100644 preview-packages/google-cloud-compute/docs/compute_v1/image_views.rst create mode 100644 preview-packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/client.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/pagers.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/README.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest_base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/client.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/pagers.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/README.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest_base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/client.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/pagers.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/README.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest_base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py create mode 100644 preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnect_member_instances_list_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_delete_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_get_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_insert_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_list_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_query_formability_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_aggregated_list_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_delete_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_failover_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_get_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_insert_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_list_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_patch_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py create mode 100644 preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py create mode 100644 preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnect_member_instances.py create mode 100644 preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnects.py create mode 100644 preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py create mode 100644 preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ha_controllers.py create mode 100644 preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py create mode 100644 preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py diff --git a/librarian.yaml b/librarian.yaml index b2d08fc507d8..ad9660d88df1 100644 --- a/librarian.yaml +++ b/librarian.yaml @@ -16,8 +16,8 @@ version: v0.46.0 repo: googleapis/google-cloud-python sources: googleapis: - commit: 9b719a5c153f3ec7a14d5d45d4da720410c7b943 - sha256: fcceaa2004ccc51874effb9669303c042d21ff3e308f1710ce8280acbab8e2a5 + commit: 93d6085996d0b4ff7e7e86ca9945d5524bb380d1 + sha256: 2271ff64a808d6a9089d0f410d28fc9ce4dd35ffe6e1c2cf79dd9a8578ddc871 tools: pip: - name: black diff --git a/packages/google-ads-datamanager/google/ads/datamanager/__init__.py b/packages/google-ads-datamanager/google/ads/datamanager/__init__.py index e0dea6076714..1cf6d9260a27 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager/__init__.py +++ b/packages/google-ads-datamanager/google/ads/datamanager/__init__.py @@ -110,10 +110,14 @@ IngestAudienceMembersResponse, IngestEventsRequest, IngestEventsResponse, + IngestUsersRequest, + IngestUsersResponse, RemoveAllAudienceMembersRequest, RemoveAllAudienceMembersResponse, RemoveAudienceMembersRequest, RemoveAudienceMembersResponse, + RemoveUsersRequest, + RemoveUsersResponse, RetrieveRequestStatusRequest, RetrieveRequestStatusResponse, ) @@ -151,6 +155,7 @@ TermsOfService, TermsOfServiceStatus, ) +from google.ads.datamanager_v1.types.user import User from google.ads.datamanager_v1.types.user_data import ( AddressInfo, UserData, @@ -287,10 +292,14 @@ "IngestAudienceMembersResponse", "IngestEventsRequest", "IngestEventsResponse", + "IngestUsersRequest", + "IngestUsersResponse", "RemoveAllAudienceMembersRequest", "RemoveAllAudienceMembersResponse", "RemoveAudienceMembersRequest", "RemoveAudienceMembersResponse", + "RemoveUsersRequest", + "RemoveUsersResponse", "RetrieveRequestStatusRequest", "RetrieveRequestStatusResponse", "Encoding", @@ -318,6 +327,7 @@ "RequestStatusPerDestination", "TermsOfService", "TermsOfServiceStatus", + "User", "AddressInfo", "UserData", "UserIdentifier", diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/__init__.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/__init__.py index 3429f714f75d..f8e6018ef51c 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/__init__.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/__init__.py @@ -53,6 +53,7 @@ "google.ads.datamanager_v1.types.processing_errors", "google.ads.datamanager_v1.types.request_status_per_destination", "google.ads.datamanager_v1.types.terms_of_service", + "google.ads.datamanager_v1.types.user", "google.ads.datamanager_v1.types.user_data", "google.ads.datamanager_v1.types.user_list", "google.ads.datamanager_v1.types.user_list_direct_license", @@ -146,10 +147,14 @@ IngestAudienceMembersResponse, IngestEventsRequest, IngestEventsResponse, + IngestUsersRequest, + IngestUsersResponse, RemoveAllAudienceMembersRequest, RemoveAllAudienceMembersResponse, RemoveAudienceMembersRequest, RemoveAudienceMembersResponse, + RemoveUsersRequest, + RemoveUsersResponse, RetrieveRequestStatusRequest, RetrieveRequestStatusResponse, ) @@ -182,6 +187,7 @@ ) from .types.request_status_per_destination import RequestStatusPerDestination from .types.terms_of_service import TermsOfService, TermsOfServiceStatus +from .types.user import User from .types.user_data import AddressInfo, UserData, UserIdentifier from .types.user_list import ( ContactIdInfo, @@ -301,6 +307,8 @@ "IngestAudienceMembersResponse", "IngestEventsRequest", "IngestEventsResponse", + "IngestUsersRequest", + "IngestUsersResponse", "IngestedUserListInfo", "IngestionServiceClient", "IpData", @@ -340,6 +348,8 @@ "RemoveAllAudienceMembersResponse", "RemoveAudienceMembersRequest", "RemoveAudienceMembersResponse", + "RemoveUsersRequest", + "RemoveUsersResponse", "RequestStatusPerDestination", "RetrieveInsightsRequest", "RetrieveInsightsResponse", @@ -355,6 +365,7 @@ "UpdateUserListDirectLicenseRequest", "UpdateUserListGlobalLicenseRequest", "UpdateUserListRequest", + "User", "UserData", "UserIdData", "UserIdInfo", diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/gapic_metadata.json b/packages/google-ads-datamanager/google/ads/datamanager_v1/gapic_metadata.json index 79517f827f52..aa63f6f59c8f 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/gapic_metadata.json +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/gapic_metadata.json @@ -25,6 +25,11 @@ "ingest_events" ] }, + "IngestUsers": { + "methods": [ + "ingest_users" + ] + }, "RemoveAllAudienceMembers": { "methods": [ "remove_all_audience_members" @@ -35,6 +40,11 @@ "remove_audience_members" ] }, + "RemoveUsers": { + "methods": [ + "remove_users" + ] + }, "RetrieveRequestStatus": { "methods": [ "retrieve_request_status" @@ -60,6 +70,11 @@ "ingest_events" ] }, + "IngestUsers": { + "methods": [ + "ingest_users" + ] + }, "RemoveAllAudienceMembers": { "methods": [ "remove_all_audience_members" @@ -70,6 +85,11 @@ "remove_audience_members" ] }, + "RemoveUsers": { + "methods": [ + "remove_users" + ] + }, "RetrieveRequestStatus": { "methods": [ "retrieve_request_status" @@ -95,6 +115,11 @@ "ingest_events" ] }, + "IngestUsers": { + "methods": [ + "ingest_users" + ] + }, "RemoveAllAudienceMembers": { "methods": [ "remove_all_audience_members" @@ -105,6 +130,11 @@ "remove_audience_members" ] }, + "RemoveUsers": { + "methods": [ + "remove_users" + ] + }, "RetrieveRequestStatus": { "methods": [ "retrieve_request_status" diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/async_client.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/async_client.py index fac09fa7b43e..8e97852652f8 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/async_client.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/async_client.py @@ -659,6 +659,191 @@ async def sample_ingest_events(): # Done; return the response. return response + async def ingest_users( + self, + request: Optional[Union[ingestion_service.IngestUsersRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> ingestion_service.IngestUsersResponse: + r"""Uploads a list of users to the provided destinations. Unlike + [IngestAudienceMembers][google.ads.datamanager.v1.IngestionService.IngestAudienceMembers] + (which adds users to specific advertiser audience lists for + targeting), ``IngestUsers`` ingests account level identity + linkage data (for example, user identifiers linked to mobile + IDs) independent of specific audience segments. + + This feature is only available to accounts on an allowlist. + + .. 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.ads import datamanager_v1 + + async def sample_ingest_users(): + # Create a client + client = datamanager_v1.IngestionServiceAsyncClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + users = datamanager_v1.User() + users.user_data.user_identifiers.email_address = "email_address_value" + users.mobile_data.mobile_ids = ['mobile_ids_value1', 'mobile_ids_value2'] + + request = datamanager_v1.IngestUsersRequest( + destinations=destinations, + users=users, + encoding="BASE64", + ) + + # Make the request + response = await client.ingest_users(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.ads.datamanager_v1.types.IngestUsersRequest, dict]]): + The request object. Request to upload users to the + provided destinations. + retry (google.api_core.retry_async.AsyncRetry): 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.ads.datamanager_v1.types.IngestUsersResponse: + Response from the IngestUsersRequest. + """ + # Create or coerce a protobuf request object. + # - 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, ingestion_service.IngestUsersRequest): + request = ingestion_service.IngestUsersRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.ingest_users + ] + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def remove_users( + self, + request: Optional[Union[ingestion_service.RemoveUsersRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> ingestion_service.RemoveUsersResponse: + r"""Removes a list of users from the provided + destinations. + This feature is only available to accounts on an + allowlist. + + .. 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.ads import datamanager_v1 + + async def sample_remove_users(): + # Create a client + client = datamanager_v1.IngestionServiceAsyncClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + user_data = datamanager_v1.UserData() + user_data.user_identifiers.email_address = "email_address_value" + + request = datamanager_v1.RemoveUsersRequest( + destinations=destinations, + user_data=user_data, + encoding="BASE64", + ) + + # Make the request + response = await client.remove_users(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.ads.datamanager_v1.types.RemoveUsersRequest, dict]]): + The request object. Request to remove users from the + provided destinations. + retry (google.api_core.retry_async.AsyncRetry): 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.ads.datamanager_v1.types.RemoveUsersResponse: + Response from the RemoveUsersRequest. + """ + # Create or coerce a protobuf request object. + # - 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, ingestion_service.RemoveUsersRequest): + request = ingestion_service.RemoveUsersRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.remove_users + ] + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + async def ingest_ad_events( self, request: Optional[Union[ingestion_service.IngestAdEventsRequest, dict]] = None, diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/client.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/client.py index 267c0531037e..612621b8fe9f 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/client.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/client.py @@ -931,6 +931,187 @@ def sample_ingest_events(): # Done; return the response. return response + def ingest_users( + self, + request: Optional[Union[ingestion_service.IngestUsersRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> ingestion_service.IngestUsersResponse: + r"""Uploads a list of users to the provided destinations. Unlike + [IngestAudienceMembers][google.ads.datamanager.v1.IngestionService.IngestAudienceMembers] + (which adds users to specific advertiser audience lists for + targeting), ``IngestUsers`` ingests account level identity + linkage data (for example, user identifiers linked to mobile + IDs) independent of specific audience segments. + + This feature is only available to accounts on an allowlist. + + .. 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.ads import datamanager_v1 + + def sample_ingest_users(): + # Create a client + client = datamanager_v1.IngestionServiceClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + users = datamanager_v1.User() + users.user_data.user_identifiers.email_address = "email_address_value" + users.mobile_data.mobile_ids = ['mobile_ids_value1', 'mobile_ids_value2'] + + request = datamanager_v1.IngestUsersRequest( + destinations=destinations, + users=users, + encoding="BASE64", + ) + + # Make the request + response = client.ingest_users(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.datamanager_v1.types.IngestUsersRequest, dict]): + The request object. Request to upload users to the + provided destinations. + 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.ads.datamanager_v1.types.IngestUsersResponse: + Response from the IngestUsersRequest. + """ + # Create or coerce a protobuf request object. + # - 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, ingestion_service.IngestUsersRequest): + request = ingestion_service.IngestUsersRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.ingest_users] + + # 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 remove_users( + self, + request: Optional[Union[ingestion_service.RemoveUsersRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> ingestion_service.RemoveUsersResponse: + r"""Removes a list of users from the provided + destinations. + This feature is only available to accounts on an + allowlist. + + .. 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.ads import datamanager_v1 + + def sample_remove_users(): + # Create a client + client = datamanager_v1.IngestionServiceClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + user_data = datamanager_v1.UserData() + user_data.user_identifiers.email_address = "email_address_value" + + request = datamanager_v1.RemoveUsersRequest( + destinations=destinations, + user_data=user_data, + encoding="BASE64", + ) + + # Make the request + response = client.remove_users(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.ads.datamanager_v1.types.RemoveUsersRequest, dict]): + The request object. Request to remove users from the + provided destinations. + 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.ads.datamanager_v1.types.RemoveUsersResponse: + Response from the RemoveUsersRequest. + """ + # Create or coerce a protobuf request object. + # - 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, ingestion_service.RemoveUsersRequest): + request = ingestion_service.RemoveUsersRequest(request) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.remove_users] + + # 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 ingest_ad_events( self, request: Optional[Union[ingestion_service.IngestAdEventsRequest, dict]] = None, diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/base.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/base.py index d539e6aee9f2..0e4eefaebad7 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/base.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/base.py @@ -190,6 +190,36 @@ def _prep_wrapped_messages(self, client_info): default_timeout=120.0, client_info=client_info, ), + self.ingest_users: gapic_v1.method.wrap_method( + self.ingest_users, + default_retry=retries.Retry( + initial=5.0, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=120.0, + ), + default_timeout=120.0, + client_info=client_info, + ), + self.remove_users: gapic_v1.method.wrap_method( + self.remove_users, + default_retry=retries.Retry( + initial=5.0, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=120.0, + ), + default_timeout=120.0, + client_info=client_info, + ), self.ingest_ad_events: gapic_v1.method.wrap_method( self.ingest_ad_events, default_timeout=None, @@ -269,6 +299,30 @@ def ingest_events( ]: raise NotImplementedError() + @property + def ingest_users( + self, + ) -> Callable[ + [ingestion_service.IngestUsersRequest], + Union[ + ingestion_service.IngestUsersResponse, + Awaitable[ingestion_service.IngestUsersResponse], + ], + ]: + raise NotImplementedError() + + @property + def remove_users( + self, + ) -> Callable[ + [ingestion_service.RemoveUsersRequest], + Union[ + ingestion_service.RemoveUsersResponse, + Awaitable[ingestion_service.RemoveUsersResponse], + ], + ]: + raise NotImplementedError() + @property def ingest_ad_events( self, diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc.py index 715f59476859..f6df96efa9c1 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc.py @@ -451,6 +451,72 @@ def ingest_events( ) return self._stubs["ingest_events"] + @property + def ingest_users( + self, + ) -> Callable[ + [ingestion_service.IngestUsersRequest], ingestion_service.IngestUsersResponse + ]: + r"""Return a callable for the ingest users method over gRPC. + + Uploads a list of users to the provided destinations. Unlike + [IngestAudienceMembers][google.ads.datamanager.v1.IngestionService.IngestAudienceMembers] + (which adds users to specific advertiser audience lists for + targeting), ``IngestUsers`` ingests account level identity + linkage data (for example, user identifiers linked to mobile + IDs) independent of specific audience segments. + + This feature is only available to accounts on an allowlist. + + Returns: + Callable[[~.IngestUsersRequest], + ~.IngestUsersResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "ingest_users" not in self._stubs: + self._stubs["ingest_users"] = self._logged_channel.unary_unary( + "/google.ads.datamanager.v1.IngestionService/IngestUsers", + request_serializer=ingestion_service.IngestUsersRequest.serialize, + response_deserializer=ingestion_service.IngestUsersResponse.deserialize, + ) + return self._stubs["ingest_users"] + + @property + def remove_users( + self, + ) -> Callable[ + [ingestion_service.RemoveUsersRequest], ingestion_service.RemoveUsersResponse + ]: + r"""Return a callable for the remove users method over gRPC. + + Removes a list of users from the provided + destinations. + This feature is only available to accounts on an + allowlist. + + Returns: + Callable[[~.RemoveUsersRequest], + ~.RemoveUsersResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "remove_users" not in self._stubs: + self._stubs["remove_users"] = self._logged_channel.unary_unary( + "/google.ads.datamanager.v1.IngestionService/RemoveUsers", + request_serializer=ingestion_service.RemoveUsersRequest.serialize, + response_deserializer=ingestion_service.RemoveUsersResponse.deserialize, + ) + return self._stubs["remove_users"] + @property def ingest_ad_events( self, diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc_asyncio.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc_asyncio.py index 81b6d5b22da4..943b68e58454 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc_asyncio.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/grpc_asyncio.py @@ -460,6 +460,74 @@ def ingest_events( ) return self._stubs["ingest_events"] + @property + def ingest_users( + self, + ) -> Callable[ + [ingestion_service.IngestUsersRequest], + Awaitable[ingestion_service.IngestUsersResponse], + ]: + r"""Return a callable for the ingest users method over gRPC. + + Uploads a list of users to the provided destinations. Unlike + [IngestAudienceMembers][google.ads.datamanager.v1.IngestionService.IngestAudienceMembers] + (which adds users to specific advertiser audience lists for + targeting), ``IngestUsers`` ingests account level identity + linkage data (for example, user identifiers linked to mobile + IDs) independent of specific audience segments. + + This feature is only available to accounts on an allowlist. + + Returns: + Callable[[~.IngestUsersRequest], + Awaitable[~.IngestUsersResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "ingest_users" not in self._stubs: + self._stubs["ingest_users"] = self._logged_channel.unary_unary( + "/google.ads.datamanager.v1.IngestionService/IngestUsers", + request_serializer=ingestion_service.IngestUsersRequest.serialize, + response_deserializer=ingestion_service.IngestUsersResponse.deserialize, + ) + return self._stubs["ingest_users"] + + @property + def remove_users( + self, + ) -> Callable[ + [ingestion_service.RemoveUsersRequest], + Awaitable[ingestion_service.RemoveUsersResponse], + ]: + r"""Return a callable for the remove users method over gRPC. + + Removes a list of users from the provided + destinations. + This feature is only available to accounts on an + allowlist. + + Returns: + Callable[[~.RemoveUsersRequest], + Awaitable[~.RemoveUsersResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "remove_users" not in self._stubs: + self._stubs["remove_users"] = self._logged_channel.unary_unary( + "/google.ads.datamanager.v1.IngestionService/RemoveUsers", + request_serializer=ingestion_service.RemoveUsersRequest.serialize, + response_deserializer=ingestion_service.RemoveUsersResponse.deserialize, + ) + return self._stubs["remove_users"] + @property def ingest_ad_events( self, @@ -574,6 +642,36 @@ def _prep_wrapped_messages(self, client_info): default_timeout=120.0, client_info=client_info, ), + self.ingest_users: self._wrap_method( + self.ingest_users, + default_retry=retries.AsyncRetry( + initial=5.0, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=120.0, + ), + default_timeout=120.0, + client_info=client_info, + ), + self.remove_users: self._wrap_method( + self.remove_users, + default_retry=retries.AsyncRetry( + initial=5.0, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=120.0, + ), + default_timeout=120.0, + client_info=client_info, + ), self.ingest_ad_events: self._wrap_method( self.ingest_ad_events, default_timeout=None, diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest.py index f30cc83c902a..0ad4036d658a 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest.py @@ -96,6 +96,14 @@ def post_ingest_events(self, response): logging.log(f"Received response: {response}") return response + def pre_ingest_users(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_ingest_users(self, response): + logging.log(f"Received response: {response}") + return response + def pre_remove_all_audience_members(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -112,6 +120,14 @@ def post_remove_audience_members(self, response): logging.log(f"Received response: {response}") return response + def pre_remove_users(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_remove_users(self, response): + logging.log(f"Received response: {response}") + return response + def pre_retrieve_request_status(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -279,6 +295,56 @@ def post_ingest_events_with_metadata( """ return response, metadata + def pre_ingest_users( + self, + request: ingestion_service.IngestUsersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + ingestion_service.IngestUsersRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for ingest_users + + Override in a subclass to manipulate the request or metadata + before they are sent to the IngestionService server. + """ + return request, metadata + + def post_ingest_users( + self, response: ingestion_service.IngestUsersResponse + ) -> ingestion_service.IngestUsersResponse: + """Post-rpc interceptor for ingest_users + + DEPRECATED. Please use the `post_ingest_users_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the IngestionService server but before + it is returned to user code. This `post_ingest_users` interceptor runs + before the `post_ingest_users_with_metadata` interceptor. + """ + return response + + def post_ingest_users_with_metadata( + self, + response: ingestion_service.IngestUsersResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + ingestion_service.IngestUsersResponse, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for ingest_users + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the IngestionService server but before it is returned to user code. + + We recommend only using this `post_ingest_users_with_metadata` + interceptor in new development instead of the `post_ingest_users` interceptor. + When both interceptors are used, this `post_ingest_users_with_metadata` interceptor runs after the + `post_ingest_users` interceptor. The (possibly modified) response returned by + `post_ingest_users` will be passed to + `post_ingest_users_with_metadata`. + """ + return response, metadata + def pre_remove_all_audience_members( self, request: ingestion_service.RemoveAllAudienceMembersRequest, @@ -383,6 +449,56 @@ def post_remove_audience_members_with_metadata( """ return response, metadata + def pre_remove_users( + self, + request: ingestion_service.RemoveUsersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + ingestion_service.RemoveUsersRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for remove_users + + Override in a subclass to manipulate the request or metadata + before they are sent to the IngestionService server. + """ + return request, metadata + + def post_remove_users( + self, response: ingestion_service.RemoveUsersResponse + ) -> ingestion_service.RemoveUsersResponse: + """Post-rpc interceptor for remove_users + + DEPRECATED. Please use the `post_remove_users_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the IngestionService server but before + it is returned to user code. This `post_remove_users` interceptor runs + before the `post_remove_users_with_metadata` interceptor. + """ + return response + + def post_remove_users_with_metadata( + self, + response: ingestion_service.RemoveUsersResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + ingestion_service.RemoveUsersResponse, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for remove_users + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the IngestionService server but before it is returned to user code. + + We recommend only using this `post_remove_users_with_metadata` + interceptor in new development instead of the `post_remove_users` interceptor. + When both interceptors are used, this `post_remove_users_with_metadata` interceptor runs after the + `post_remove_users` interceptor. The (possibly modified) response returned by + `post_remove_users` will be passed to + `post_remove_users_with_metadata`. + """ + return response, metadata + def pre_retrieve_request_status( self, request: ingestion_service.RetrieveRequestStatusRequest, @@ -991,6 +1107,156 @@ def __call__( ) return resp + class _IngestUsers( + _BaseIngestionServiceRestTransport._BaseIngestUsers, IngestionServiceRestStub + ): + def __hash__(self): + return hash("IngestionServiceRestTransport.IngestUsers") + + @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: ingestion_service.IngestUsersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> ingestion_service.IngestUsersResponse: + r"""Call the ingest users method over HTTP. + + Args: + request (~.ingestion_service.IngestUsersRequest): + The request object. Request to upload users to the + provided destinations. + 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: + ~.ingestion_service.IngestUsersResponse: + Response from the IngestUsersRequest. + """ + + http_options = ( + _BaseIngestionServiceRestTransport._BaseIngestUsers._get_http_options() + ) + request, metadata = self._interceptor.pre_ingest_users(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseIngestionServiceRestTransport._BaseIngestUsers, + "_BaseIngestUsers__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.ads.datamanager_v1.IngestionServiceClient.IngestUsers", + extra={ + "serviceName": "google.ads.datamanager.v1.IngestionService", + "rpcName": "IngestUsers", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = IngestionServiceRestTransport._IngestUsers._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 = ingestion_service.IngestUsersResponse() + pb_resp = ingestion_service.IngestUsersResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_ingest_users(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_ingest_users_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ingestion_service.IngestUsersResponse.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.ads.datamanager_v1.IngestionServiceClient.ingest_users", + extra={ + "serviceName": "google.ads.datamanager.v1.IngestionService", + "rpcName": "IngestUsers", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _RemoveAllAudienceMembers( _BaseIngestionServiceRestTransport._BaseRemoveAllAudienceMembers, IngestionServiceRestStub, @@ -1308,6 +1574,156 @@ def __call__( ) return resp + class _RemoveUsers( + _BaseIngestionServiceRestTransport._BaseRemoveUsers, IngestionServiceRestStub + ): + def __hash__(self): + return hash("IngestionServiceRestTransport.RemoveUsers") + + @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: ingestion_service.RemoveUsersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> ingestion_service.RemoveUsersResponse: + r"""Call the remove users method over HTTP. + + Args: + request (~.ingestion_service.RemoveUsersRequest): + The request object. Request to remove users from the + provided destinations. + 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: + ~.ingestion_service.RemoveUsersResponse: + Response from the RemoveUsersRequest. + """ + + http_options = ( + _BaseIngestionServiceRestTransport._BaseRemoveUsers._get_http_options() + ) + request, metadata = self._interceptor.pre_remove_users(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseIngestionServiceRestTransport._BaseRemoveUsers, + "_BaseRemoveUsers__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.ads.datamanager_v1.IngestionServiceClient.RemoveUsers", + extra={ + "serviceName": "google.ads.datamanager.v1.IngestionService", + "rpcName": "RemoveUsers", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = IngestionServiceRestTransport._RemoveUsers._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 = ingestion_service.RemoveUsersResponse() + pb_resp = ingestion_service.RemoveUsersResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_remove_users(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_remove_users_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ingestion_service.RemoveUsersResponse.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.ads.datamanager_v1.IngestionServiceClient.remove_users", + extra={ + "serviceName": "google.ads.datamanager.v1.IngestionService", + "rpcName": "RemoveUsers", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _RetrieveRequestStatus( _BaseIngestionServiceRestTransport._BaseRetrieveRequestStatus, IngestionServiceRestStub, @@ -1496,6 +1912,16 @@ def ingest_events( # In C++ this would require a dynamic_cast return self._IngestEvents(self._session, self._host, self._interceptor) # type: ignore + @property + def ingest_users( + self, + ) -> Callable[ + [ingestion_service.IngestUsersRequest], ingestion_service.IngestUsersResponse + ]: + # 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._IngestUsers(self._session, self._host, self._interceptor) # type: ignore + @property def remove_all_audience_members( self, @@ -1520,6 +1946,16 @@ def remove_audience_members( # In C++ this would require a dynamic_cast return self._RemoveAudienceMembers(self._session, self._host, self._interceptor) # type: ignore + @property + def remove_users( + self, + ) -> Callable[ + [ingestion_service.RemoveUsersRequest], ingestion_service.RemoveUsersResponse + ]: + # 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._RemoveUsers(self._session, self._host, self._interceptor) # type: ignore + @property def retrieve_request_status( self, diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest_base.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest_base.py index ee3589fddf89..98dbe613d763 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest_base.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/services/ingestion_service/transports/rest_base.py @@ -138,6 +138,23 @@ def _get_http_options(): ] return http_options + class _BaseIngestUsers: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/users:ingest", + "body": "*", + }, + ] + return http_options + class _BaseRemoveAllAudienceMembers: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -172,6 +189,23 @@ def _get_http_options(): ] return http_options + class _BaseRemoveUsers: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v1/users:remove", + "body": "*", + }, + ] + return http_options + class _BaseRetrieveRequestStatus: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/__init__.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/__init__.py index fe45d373ff1c..d4e4f1c265d1 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/__init__.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/__init__.py @@ -88,10 +88,14 @@ IngestAudienceMembersResponse, IngestEventsRequest, IngestEventsResponse, + IngestUsersRequest, + IngestUsersResponse, RemoveAllAudienceMembersRequest, RemoveAllAudienceMembersResponse, RemoveAudienceMembersRequest, RemoveAudienceMembersResponse, + RemoveUsersRequest, + RemoveUsersResponse, RetrieveRequestStatusRequest, RetrieveRequestStatusResponse, ) @@ -133,6 +137,9 @@ TermsOfService, TermsOfServiceStatus, ) +from .user import ( + User, +) from .user_data import ( AddressInfo, UserData, @@ -257,10 +264,14 @@ "IngestAudienceMembersResponse", "IngestEventsRequest", "IngestEventsResponse", + "IngestUsersRequest", + "IngestUsersResponse", "RemoveAllAudienceMembersRequest", "RemoveAllAudienceMembersResponse", "RemoveAudienceMembersRequest", "RemoveAudienceMembersResponse", + "RemoveUsersRequest", + "RemoveUsersResponse", "RetrieveRequestStatusRequest", "RetrieveRequestStatusResponse", "Encoding", @@ -288,6 +299,7 @@ "RequestStatusPerDestination", "TermsOfService", "TermsOfServiceStatus", + "User", "AddressInfo", "UserData", "UserIdentifier", diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/error.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/error.py index 334ba3a453d2..4a67f6c627dc 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/error.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/error.py @@ -348,6 +348,9 @@ class ErrorReason(proto.Enum): CUSTOM_VARIABLE_NOT_FOUND (120): The destination does not have a custom variable with a name that matches the specified ``variable``. + TOO_MANY_USERS (121): + Maximum number of users allowed per request + is 10,000. BASELINE_LOCATION_AUTO_DETECTION_FAILED (122): The [location_auto_detection_enabled][google.ads.datamanager.v1.Baseline.location_auto_detection_enabled] @@ -370,6 +373,16 @@ class ErrorReason(proto.Enum): CONVERSION_ACTION_TOO_RECENTLY_CREATED (127): The conversion action was created too recently. + INVALID_AD_IDENTIFIER_FOR_ACCOUNT (128): + The ad identifier does not belong to the account. + + For example, the + [``gclid``][google.ads.datamanager.v1.AdIdentifiers.gclid] + isn't associated with the + [``operating_account``][google.ads.datamanager.v1.Destination.operating_account] + and + [``product_destination_id``][google.ads.datamanager.v1.Destination.product_destination_id] + of the destination. """ ERROR_REASON_UNSPECIFIED = 0 @@ -493,12 +506,14 @@ class ErrorReason(proto.Enum): CUSTOM_VARIABLE_NOT_ENABLED = 118 INVALID_CUSTOM_VARIABLE_VALUE = 119 CUSTOM_VARIABLE_NOT_FOUND = 120 + TOO_MANY_USERS = 121 BASELINE_LOCATION_AUTO_DETECTION_FAILED = 122 INSIGHTS_MISSING_FOR_DIMENSION = 123 REQUIRED_PREREQUISITE_LINK_MISSING = 124 INVALID_REMOVE_AS_OF_TIME = 125 REQUEST_TOO_OLD = 126 CONVERSION_ACTION_TOO_RECENTLY_CREATED = 127 + INVALID_AD_IDENTIFIER_FOR_ACCOUNT = 128 __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/ingestion_service.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/ingestion_service.py index 313f45077ce0..50849157db54 100644 --- a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/ingestion_service.py +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/ingestion_service.py @@ -26,6 +26,7 @@ destination, event, processing_errors, + user, ) from google.ads.datamanager_v1.types import consent as gad_consent from google.ads.datamanager_v1.types import encryption_info as gad_encryption_info @@ -33,6 +34,7 @@ request_status_per_destination as gad_request_status_per_destination, ) from google.ads.datamanager_v1.types import terms_of_service as gad_terms_of_service +from google.ads.datamanager_v1.types import user_data as gad_user_data __protobuf__ = proto.module( package="google.ads.datamanager.v1", @@ -46,6 +48,10 @@ "RemoveAllAudienceMembersResponse", "IngestEventsRequest", "IngestEventsResponse", + "IngestUsersRequest", + "IngestUsersResponse", + "RemoveUsersRequest", + "RemoveUsersResponse", "IngestAdEventsRequest", "IngestAdEventsResponse", "RetrieveRequestStatusRequest", @@ -394,6 +400,133 @@ class IngestEventsResponse(proto.Message): ) +class IngestUsersRequest(proto.Message): + r"""Request to upload users to the provided destinations. + + Attributes: + destinations (MutableSequence[google.ads.datamanager_v1.types.Destination]): + Required. The list of possible ingestion + destinations. + users (MutableSequence[google.ads.datamanager_v1.types.User]): + Required. The list of users to ingest. + encryption_info (google.ads.datamanager_v1.types.EncryptionInfo): + Optional. Encryption information about + encryption keys which are used to encrypt the + data. + validate_only (bool): + Optional. If ``true``, the request is validated but not + executed. + encoding (google.ads.datamanager_v1.types.Encoding): + Required. The encoding type of the user + identifiers. For encrypted user identifiers, + this only applies to the outer encoding. + """ + + destinations: MutableSequence[destination.Destination] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message=destination.Destination, + ) + users: MutableSequence[user.User] = proto.RepeatedField( + proto.MESSAGE, + number=2, + message=user.User, + ) + encryption_info: gad_encryption_info.EncryptionInfo = proto.Field( + proto.MESSAGE, + number=3, + message=gad_encryption_info.EncryptionInfo, + ) + validate_only: bool = proto.Field( + proto.BOOL, + number=4, + ) + encoding: "Encoding" = proto.Field( + proto.ENUM, + number=5, + enum="Encoding", + ) + + +class IngestUsersResponse(proto.Message): + r"""Response from the IngestUsersRequest. + + Attributes: + request_id (str): + The generated request id of the Ingestion + Request. + """ + + request_id: str = proto.Field( + proto.STRING, + number=1, + ) + + +class RemoveUsersRequest(proto.Message): + r"""Request to remove users from the provided destinations. + + Attributes: + destinations (MutableSequence[google.ads.datamanager_v1.types.Destination]): + Required. The list of possible ingestion + destinations. + user_data (MutableSequence[google.ads.datamanager_v1.types.UserData]): + Required. The individual bits of UserData + that act as keys for the users to remove. + encryption_info (google.ads.datamanager_v1.types.EncryptionInfo): + Optional. Encryption information about + encryption keys which are used to encrypt the + data. + validate_only (bool): + Optional. If ``true``, the request is validated but not + executed. + encoding (google.ads.datamanager_v1.types.Encoding): + Required. The encoding type of the user + identifiers. For encrypted user identifiers, + this only applies to the outer encoding. + """ + + destinations: MutableSequence[destination.Destination] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message=destination.Destination, + ) + user_data: MutableSequence[gad_user_data.UserData] = proto.RepeatedField( + proto.MESSAGE, + number=2, + message=gad_user_data.UserData, + ) + encryption_info: gad_encryption_info.EncryptionInfo = proto.Field( + proto.MESSAGE, + number=3, + message=gad_encryption_info.EncryptionInfo, + ) + validate_only: bool = proto.Field( + proto.BOOL, + number=4, + ) + encoding: "Encoding" = proto.Field( + proto.ENUM, + number=5, + enum="Encoding", + ) + + +class RemoveUsersResponse(proto.Message): + r"""Response from the RemoveUsersRequest. + + Attributes: + request_id (str): + The generated request id of the Ingestion + Request. + """ + + request_id: str = proto.Field( + proto.STRING, + number=1, + ) + + class IngestAdEventsRequest(proto.Message): r"""Request to upload ad events. diff --git a/packages/google-ads-datamanager/google/ads/datamanager_v1/types/user.py b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/user.py new file mode 100644 index 000000000000..79b354ff4a44 --- /dev/null +++ b/packages/google-ads-datamanager/google/ads/datamanager_v1/types/user.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from __future__ import annotations + +from typing import MutableMapping, MutableSequence + +import proto # type: ignore + +from google.ads.datamanager_v1.types import audience +from google.ads.datamanager_v1.types import user_data as gad_user_data + +__protobuf__ = proto.module( + package="google.ads.datamanager.v1", + manifest={ + "User", + }, +) + + +class User(proto.Message): + r"""Represents a single user, containing identifiers like PII and + mobile device IDs that all refer to the same user. + + Attributes: + user_data (google.ads.datamanager_v1.types.UserData): + Required. Multiple pieces of user-provided + data, used as the means of identifying the user. + mobile_data (google.ads.datamanager_v1.types.MobileData): + Required. Multiple mobile device ID strings + to represent a single user. + """ + + user_data: gad_user_data.UserData = proto.Field( + proto.MESSAGE, + number=1, + message=gad_user_data.UserData, + ) + mobile_data: audience.MobileData = proto.Field( + proto.MESSAGE, + number=2, + message=audience.MobileData, + ) + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_async.py b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_async.py new file mode 100644 index 000000000000..aa63347df4be --- /dev/null +++ b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_async.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 IngestUsers +# 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-ads-datamanager + + +# [START datamanager_v1_generated_IngestionService_IngestUsers_async] +# 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.ads import datamanager_v1 + + +async def sample_ingest_users(): + # Create a client + client = datamanager_v1.IngestionServiceAsyncClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + users = datamanager_v1.User() + users.user_data.user_identifiers.email_address = "email_address_value" + users.mobile_data.mobile_ids = ["mobile_ids_value1", "mobile_ids_value2"] + + request = datamanager_v1.IngestUsersRequest( + destinations=destinations, + users=users, + encoding="BASE64", + ) + + # Make the request + response = await client.ingest_users(request=request) + + # Handle the response + print(response) + + +# [END datamanager_v1_generated_IngestionService_IngestUsers_async] diff --git a/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_sync.py b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_sync.py new file mode 100644 index 000000000000..a5a58784ccde --- /dev/null +++ b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_ingest_users_sync.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 IngestUsers +# 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-ads-datamanager + + +# [START datamanager_v1_generated_IngestionService_IngestUsers_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.ads import datamanager_v1 + + +def sample_ingest_users(): + # Create a client + client = datamanager_v1.IngestionServiceClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + users = datamanager_v1.User() + users.user_data.user_identifiers.email_address = "email_address_value" + users.mobile_data.mobile_ids = ["mobile_ids_value1", "mobile_ids_value2"] + + request = datamanager_v1.IngestUsersRequest( + destinations=destinations, + users=users, + encoding="BASE64", + ) + + # Make the request + response = client.ingest_users(request=request) + + # Handle the response + print(response) + + +# [END datamanager_v1_generated_IngestionService_IngestUsers_sync] diff --git a/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_async.py b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_async.py new file mode 100644 index 000000000000..1502c8abc618 --- /dev/null +++ b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_async.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 RemoveUsers +# 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-ads-datamanager + + +# [START datamanager_v1_generated_IngestionService_RemoveUsers_async] +# 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.ads import datamanager_v1 + + +async def sample_remove_users(): + # Create a client + client = datamanager_v1.IngestionServiceAsyncClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + user_data = datamanager_v1.UserData() + user_data.user_identifiers.email_address = "email_address_value" + + request = datamanager_v1.RemoveUsersRequest( + destinations=destinations, + user_data=user_data, + encoding="BASE64", + ) + + # Make the request + response = await client.remove_users(request=request) + + # Handle the response + print(response) + + +# [END datamanager_v1_generated_IngestionService_RemoveUsers_async] diff --git a/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_sync.py b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_sync.py new file mode 100644 index 000000000000..7a6bf7339cfb --- /dev/null +++ b/packages/google-ads-datamanager/samples/generated_samples/datamanager_v1_generated_ingestion_service_remove_users_sync.py @@ -0,0 +1,62 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 RemoveUsers +# 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-ads-datamanager + + +# [START datamanager_v1_generated_IngestionService_RemoveUsers_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.ads import datamanager_v1 + + +def sample_remove_users(): + # Create a client + client = datamanager_v1.IngestionServiceClient() + + # Initialize request argument(s) + destinations = datamanager_v1.Destination() + destinations.operating_account.account_id = "account_id_value" + destinations.operating_account.account_type = "GOOGLE_AD_MANAGER" + + user_data = datamanager_v1.UserData() + user_data.user_identifiers.email_address = "email_address_value" + + request = datamanager_v1.RemoveUsersRequest( + destinations=destinations, + user_data=user_data, + encoding="BASE64", + ) + + # Make the request + response = client.remove_users(request=request) + + # Handle the response + print(response) + + +# [END datamanager_v1_generated_IngestionService_RemoveUsers_sync] diff --git a/packages/google-ads-datamanager/samples/generated_samples/snippet_metadata_google.ads.datamanager.v1.json b/packages/google-ads-datamanager/samples/generated_samples/snippet_metadata_google.ads.datamanager.v1.json index 0d7617f0e108..cb07065a3e52 100644 --- a/packages/google-ads-datamanager/samples/generated_samples/snippet_metadata_google.ads.datamanager.v1.json +++ b/packages/google-ads-datamanager/samples/generated_samples/snippet_metadata_google.ads.datamanager.v1.json @@ -470,6 +470,159 @@ ], "title": "datamanager_v1_generated_ingestion_service_ingest_events_sync.py" }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.ads.datamanager_v1.IngestionServiceAsyncClient", + "shortName": "IngestionServiceAsyncClient" + }, + "fullName": "google.ads.datamanager_v1.IngestionServiceAsyncClient.ingest_users", + "method": { + "fullName": "google.ads.datamanager.v1.IngestionService.IngestUsers", + "service": { + "fullName": "google.ads.datamanager.v1.IngestionService", + "shortName": "IngestionService" + }, + "shortName": "IngestUsers" + }, + "parameters": [ + { + "name": "request", + "type": "google.ads.datamanager_v1.types.IngestUsersRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.ads.datamanager_v1.types.IngestUsersResponse", + "shortName": "ingest_users" + }, + "description": "Sample for IngestUsers", + "file": "datamanager_v1_generated_ingestion_service_ingest_users_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "datamanager_v1_generated_IngestionService_IngestUsers_async", + "segments": [ + { + "end": 61, + "start": 27, + "type": "FULL" + }, + { + "end": 61, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 55, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 58, + "start": 56, + "type": "REQUEST_EXECUTION" + }, + { + "end": 62, + "start": 59, + "type": "RESPONSE_HANDLING" + } + ], + "title": "datamanager_v1_generated_ingestion_service_ingest_users_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.ads.datamanager_v1.IngestionServiceClient", + "shortName": "IngestionServiceClient" + }, + "fullName": "google.ads.datamanager_v1.IngestionServiceClient.ingest_users", + "method": { + "fullName": "google.ads.datamanager.v1.IngestionService.IngestUsers", + "service": { + "fullName": "google.ads.datamanager.v1.IngestionService", + "shortName": "IngestionService" + }, + "shortName": "IngestUsers" + }, + "parameters": [ + { + "name": "request", + "type": "google.ads.datamanager_v1.types.IngestUsersRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.ads.datamanager_v1.types.IngestUsersResponse", + "shortName": "ingest_users" + }, + "description": "Sample for IngestUsers", + "file": "datamanager_v1_generated_ingestion_service_ingest_users_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "datamanager_v1_generated_IngestionService_IngestUsers_sync", + "segments": [ + { + "end": 61, + "start": 27, + "type": "FULL" + }, + { + "end": 61, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 55, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 58, + "start": 56, + "type": "REQUEST_EXECUTION" + }, + { + "end": 62, + "start": 59, + "type": "RESPONSE_HANDLING" + } + ], + "title": "datamanager_v1_generated_ingestion_service_ingest_users_sync.py" + }, { "canonical": true, "clientMethod": { @@ -776,6 +929,159 @@ ], "title": "datamanager_v1_generated_ingestion_service_remove_audience_members_sync.py" }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.ads.datamanager_v1.IngestionServiceAsyncClient", + "shortName": "IngestionServiceAsyncClient" + }, + "fullName": "google.ads.datamanager_v1.IngestionServiceAsyncClient.remove_users", + "method": { + "fullName": "google.ads.datamanager.v1.IngestionService.RemoveUsers", + "service": { + "fullName": "google.ads.datamanager.v1.IngestionService", + "shortName": "IngestionService" + }, + "shortName": "RemoveUsers" + }, + "parameters": [ + { + "name": "request", + "type": "google.ads.datamanager_v1.types.RemoveUsersRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.ads.datamanager_v1.types.RemoveUsersResponse", + "shortName": "remove_users" + }, + "description": "Sample for RemoveUsers", + "file": "datamanager_v1_generated_ingestion_service_remove_users_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "datamanager_v1_generated_IngestionService_RemoveUsers_async", + "segments": [ + { + "end": 60, + "start": 27, + "type": "FULL" + }, + { + "end": 60, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 54, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 57, + "start": 55, + "type": "REQUEST_EXECUTION" + }, + { + "end": 61, + "start": 58, + "type": "RESPONSE_HANDLING" + } + ], + "title": "datamanager_v1_generated_ingestion_service_remove_users_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.ads.datamanager_v1.IngestionServiceClient", + "shortName": "IngestionServiceClient" + }, + "fullName": "google.ads.datamanager_v1.IngestionServiceClient.remove_users", + "method": { + "fullName": "google.ads.datamanager.v1.IngestionService.RemoveUsers", + "service": { + "fullName": "google.ads.datamanager.v1.IngestionService", + "shortName": "IngestionService" + }, + "shortName": "RemoveUsers" + }, + "parameters": [ + { + "name": "request", + "type": "google.ads.datamanager_v1.types.RemoveUsersRequest" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.ads.datamanager_v1.types.RemoveUsersResponse", + "shortName": "remove_users" + }, + "description": "Sample for RemoveUsers", + "file": "datamanager_v1_generated_ingestion_service_remove_users_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "datamanager_v1_generated_IngestionService_RemoveUsers_sync", + "segments": [ + { + "end": 60, + "start": 27, + "type": "FULL" + }, + { + "end": 60, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 54, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 57, + "start": 55, + "type": "REQUEST_EXECUTION" + }, + { + "end": 61, + "start": 58, + "type": "RESPONSE_HANDLING" + } + ], + "title": "datamanager_v1_generated_ingestion_service_remove_users_sync.py" + }, { "canonical": true, "clientMethod": { diff --git a/packages/google-ads-datamanager/tests/unit/gapic/datamanager_v1/test_ingestion_service.py b/packages/google-ads-datamanager/tests/unit/gapic/datamanager_v1/test_ingestion_service.py index 33177b1a79a8..8535feb2796b 100644 --- a/packages/google-ads-datamanager/tests/unit/gapic/datamanager_v1/test_ingestion_service.py +++ b/packages/google-ads-datamanager/tests/unit/gapic/datamanager_v1/test_ingestion_service.py @@ -75,6 +75,7 @@ processing_errors, request_status_per_destination, terms_of_service, + user, user_data, user_properties, viewability_info, @@ -1855,11 +1856,11 @@ async def test_ingest_events_async(request_type, transport: str = "grpc_asyncio" @pytest.mark.parametrize( "request_type", [ - ingestion_service.IngestAdEventsRequest(), + ingestion_service.IngestUsersRequest(), {}, ], ) -def test_ingest_ad_events(request_type, transport: str = "grpc"): +def test_ingest_users(request_type, transport: str = "grpc"): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -1870,22 +1871,25 @@ def test_ingest_ad_events(request_type, transport: str = "grpc"): request = request_type # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + with mock.patch.object(type(client.transport.ingest_users), "__call__") as call: # Designate an appropriate return value for the call. - call.return_value = ingestion_service.IngestAdEventsResponse() - response = client.ingest_ad_events(request) + call.return_value = ingestion_service.IngestUsersResponse( + request_id="request_id_value", + ) + response = client.ingest_users(request) # Establish that the underlying gRPC stub method was called. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - request = ingestion_service.IngestAdEventsRequest() + request = ingestion_service.IngestUsersRequest() assert args[0] == request # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.IngestAdEventsResponse) + assert isinstance(response, ingestion_service.IngestUsersResponse) + assert response.request_id == "request_id_value" -def test_ingest_ad_events_non_empty_request_with_auto_populated_field(): +def test_ingest_users_non_empty_request_with_auto_populated_field(): # This test is a coverage failsafe to make sure that UUID4 fields are # automatically populated, according to AIP-4235, with non-empty requests. client = IngestionServiceClient( @@ -1896,21 +1900,21 @@ def test_ingest_ad_events_non_empty_request_with_auto_populated_field(): # Populate all string fields in the request which are not UUID4 # since we want to check that UUID4 are populated automatically # if they meet the requirements of AIP 4235. - request = ingestion_service.IngestAdEventsRequest() + request = ingestion_service.IngestUsersRequest() # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + with mock.patch.object(type(client.transport.ingest_users), "__call__") as call: call.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client.ingest_ad_events(request=request) + client.ingest_users(request=request) call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.IngestAdEventsRequest() + request_msg = ingestion_service.IngestUsersRequest() assert args[0] == request_msg -def test_ingest_ad_events_use_cached_wrapped_rpc(): +def test_ingest_users_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: @@ -1924,23 +1928,21 @@ def test_ingest_ad_events_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.ingest_ad_events in client._transport._wrapped_methods + assert client._transport.ingest_users 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.ingest_ad_events] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.ingest_users] = mock_rpc request = {} - client.ingest_ad_events(request) + client.ingest_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.ingest_ad_events(request) + client.ingest_users(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 @@ -1948,7 +1950,7 @@ def test_ingest_ad_events_use_cached_wrapped_rpc(): @pytest.mark.asyncio -async def test_ingest_ad_events_async_use_cached_wrapped_rpc( +async def test_ingest_users_async_use_cached_wrapped_rpc( transport: str = "grpc_asyncio", ): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, @@ -1965,7 +1967,7 @@ async def test_ingest_ad_events_async_use_cached_wrapped_rpc( # Ensure method has been cached assert ( - client._client._transport.ingest_ad_events + client._client._transport.ingest_users in client._client._transport._wrapped_methods ) @@ -1973,16 +1975,16 @@ async def test_ingest_ad_events_async_use_cached_wrapped_rpc( mock_rpc = mock.AsyncMock() mock_rpc.return_value = mock.Mock() client._client._transport._wrapped_methods[ - client._client._transport.ingest_ad_events + client._client._transport.ingest_users ] = mock_rpc request = {} - await client.ingest_ad_events(request) + await client.ingest_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - await client.ingest_ad_events(request) + await client.ingest_users(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 @@ -1993,11 +1995,11 @@ async def test_ingest_ad_events_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - ingestion_service.IngestAdEventsRequest(), + ingestion_service.IngestUsersRequest(), {}, ], ) -async def test_ingest_ad_events_async(request_type, transport: str = "grpc_asyncio"): +async def test_ingest_users_async(request_type, transport: str = "grpc_asyncio"): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport=transport, @@ -2008,31 +2010,34 @@ async def test_ingest_ad_events_async(request_type, transport: str = "grpc_async request = request_type # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + with mock.patch.object(type(client.transport.ingest_users), "__call__") as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.IngestAdEventsResponse() + ingestion_service.IngestUsersResponse( + request_id="request_id_value", + ) ) - response = await client.ingest_ad_events(request) + response = await client.ingest_users(request) # Establish that the underlying gRPC stub method was called. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - request = ingestion_service.IngestAdEventsRequest() + request = ingestion_service.IngestUsersRequest() assert args[0] == request # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.IngestAdEventsResponse) + assert isinstance(response, ingestion_service.IngestUsersResponse) + assert response.request_id == "request_id_value" @pytest.mark.parametrize( "request_type", [ - ingestion_service.RetrieveRequestStatusRequest(), + ingestion_service.RemoveUsersRequest(), {}, ], ) -def test_retrieve_request_status(request_type, transport: str = "grpc"): +def test_remove_users(request_type, transport: str = "grpc"): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -2043,24 +2048,25 @@ def test_retrieve_request_status(request_type, transport: str = "grpc"): request = request_type # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.retrieve_request_status), "__call__" - ) as call: + with mock.patch.object(type(client.transport.remove_users), "__call__") as call: # Designate an appropriate return value for the call. - call.return_value = ingestion_service.RetrieveRequestStatusResponse() - response = client.retrieve_request_status(request) + call.return_value = ingestion_service.RemoveUsersResponse( + request_id="request_id_value", + ) + response = client.remove_users(request) # Establish that the underlying gRPC stub method was called. assert len(call.mock_calls) == 1 _, args, _ = call.mock_calls[0] - request = ingestion_service.RetrieveRequestStatusRequest() + request = ingestion_service.RemoveUsersRequest() assert args[0] == request # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.RetrieveRequestStatusResponse) + assert isinstance(response, ingestion_service.RemoveUsersResponse) + assert response.request_id == "request_id_value" -def test_retrieve_request_status_non_empty_request_with_auto_populated_field(): +def test_remove_users_non_empty_request_with_auto_populated_field(): # This test is a coverage failsafe to make sure that UUID4 fields are # automatically populated, according to AIP-4235, with non-empty requests. client = IngestionServiceClient( @@ -2071,27 +2077,21 @@ def test_retrieve_request_status_non_empty_request_with_auto_populated_field(): # Populate all string fields in the request which are not UUID4 # since we want to check that UUID4 are populated automatically # if they meet the requirements of AIP 4235. - request = ingestion_service.RetrieveRequestStatusRequest( - request_id="request_id_value", - ) + request = ingestion_service.RemoveUsersRequest() # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.retrieve_request_status), "__call__" - ) as call: + with mock.patch.object(type(client.transport.remove_users), "__call__") as call: call.return_value.name = ( "foo" # operation_request.operation in compute client(s) expect a string. ) - client.retrieve_request_status(request=request) + client.remove_users(request=request) call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.RetrieveRequestStatusRequest( - request_id="request_id_value", - ) + request_msg = ingestion_service.RemoveUsersRequest() assert args[0] == request_msg -def test_retrieve_request_status_use_cached_wrapped_rpc(): +def test_remove_users_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: @@ -2105,26 +2105,21 @@ def test_retrieve_request_status_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.retrieve_request_status - in client._transport._wrapped_methods - ) + assert client._transport.remove_users 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.retrieve_request_status - ] = mock_rpc + client._transport._wrapped_methods[client._transport.remove_users] = mock_rpc request = {} - client.retrieve_request_status(request) + client.remove_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.retrieve_request_status(request) + client.remove_users(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 @@ -2132,7 +2127,7 @@ def test_retrieve_request_status_use_cached_wrapped_rpc(): @pytest.mark.asyncio -async def test_retrieve_request_status_async_use_cached_wrapped_rpc( +async def test_remove_users_async_use_cached_wrapped_rpc( transport: str = "grpc_asyncio", ): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, @@ -2149,7 +2144,7 @@ async def test_retrieve_request_status_async_use_cached_wrapped_rpc( # Ensure method has been cached assert ( - client._client._transport.retrieve_request_status + client._client._transport.remove_users in client._client._transport._wrapped_methods ) @@ -2157,16 +2152,16 @@ async def test_retrieve_request_status_async_use_cached_wrapped_rpc( mock_rpc = mock.AsyncMock() mock_rpc.return_value = mock.Mock() client._client._transport._wrapped_methods[ - client._client._transport.retrieve_request_status + client._client._transport.remove_users ] = mock_rpc request = {} - await client.retrieve_request_status(request) + await client.remove_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - await client.retrieve_request_status(request) + await client.remove_users(request) # Establish that a new wrapper was not created for this call assert wrapper_fn.call_count == 0 @@ -2177,13 +2172,11 @@ async def test_retrieve_request_status_async_use_cached_wrapped_rpc( @pytest.mark.parametrize( "request_type", [ - ingestion_service.RetrieveRequestStatusRequest(), + ingestion_service.RemoveUsersRequest(), {}, ], ) -async def test_retrieve_request_status_async( - request_type, transport: str = "grpc_asyncio" -): +async def test_remove_users_async(request_type, transport: str = "grpc_asyncio"): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport=transport, @@ -2194,146 +2187,91 @@ async def test_retrieve_request_status_async( request = request_type # Mock the actual call within the gRPC stub, and fake the request. - with mock.patch.object( - type(client.transport.retrieve_request_status), "__call__" - ) as call: + with mock.patch.object(type(client.transport.remove_users), "__call__") as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.RetrieveRequestStatusResponse() + ingestion_service.RemoveUsersResponse( + request_id="request_id_value", + ) ) - response = await client.retrieve_request_status(request) + response = await client.remove_users(request) # Establish that the underlying gRPC stub method was called. assert len(call.mock_calls) _, args, _ = call.mock_calls[0] - request = ingestion_service.RetrieveRequestStatusRequest() + request = ingestion_service.RemoveUsersRequest() assert args[0] == request # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.RetrieveRequestStatusResponse) - - -def test_ingest_audience_members_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 = IngestionServiceClient( - credentials=ga_credentials.AnonymousCredentials(), - transport="rest", - ) + assert isinstance(response, ingestion_service.RemoveUsersResponse) + assert response.request_id == "request_id_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.ingest_audience_members - in client._transport._wrapped_methods - ) +@pytest.mark.parametrize( + "request_type", + [ + ingestion_service.IngestAdEventsRequest(), + {}, + ], +) +def test_ingest_ad_events(request_type, transport: str = "grpc"): + client = IngestionServiceClient( + 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. - ) - client._transport._wrapped_methods[ - client._transport.ingest_audience_members - ] = mock_rpc + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type - request = {} - client.ingest_audience_members(request) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = ingestion_service.IngestAdEventsResponse() + response = client.ingest_ad_events(request) # Establish that the underlying gRPC stub method was called. - assert mock_rpc.call_count == 1 - - client.ingest_audience_members(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_ingest_audience_members_rest_required_fields( - request_type=ingestion_service.IngestAudienceMembersRequest, -): - transport_class = transports.IngestionServiceRestTransport - - request_init = {} - 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 - - default_values = getattr( - transport_class._BaseIngestAudienceMembers, - "_BaseIngestAudienceMembers__REQUIRED_FIELDS_DEFAULT_VALUES", - {}, - ) - unset_fields = { - k: v for k, v in default_values.items() if k not in jsonified_request - } - jsonified_request.update(unset_fields) + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = ingestion_service.IngestAdEventsRequest() + assert args[0] == request - # verify required fields with default values are now present + # Establish that the response is the type that we expect. + assert isinstance(response, ingestion_service.IngestAdEventsResponse) - # verify required fields with non-default values are left alone +def test_ingest_ad_events_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) - request = request_type(**request_init) - - # Designate an appropriate value for the returned response. - return_value = ingestion_service.IngestAudienceMembersResponse() - # 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 = ingestion_service.IngestAudienceMembersResponse.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.ingest_audience_members(request) + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = ingestion_service.IngestAdEventsRequest() - expected_params = [("$alt", "json;enum-encoding=int")] - actual_params = req.call_args.kwargs["params"] - assert sorted(expected_params) == sorted(actual_params) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.ingest_ad_events(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.IngestAdEventsRequest() + assert args[0] == request_msg -def test_remove_audience_members_rest_use_cached_wrapped_rpc(): +def test_ingest_ad_events_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 = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), - transport="rest", + transport="grpc", ) # Should wrap all calls on client creation @@ -2341,36 +2279,676 @@ def test_remove_audience_members_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.remove_audience_members - in client._transport._wrapped_methods - ) + assert client._transport.ingest_ad_events 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.remove_audience_members - ] = mock_rpc - + client._transport._wrapped_methods[client._transport.ingest_ad_events] = ( + mock_rpc + ) request = {} - client.remove_audience_members(request) + client.ingest_ad_events(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.remove_audience_members(request) + client.ingest_ad_events(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_remove_audience_members_rest_required_fields( - request_type=ingestion_service.RemoveAudienceMembersRequest, -): +@pytest.mark.asyncio +async def test_ingest_ad_events_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.ingest_ad_events + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.ingest_ad_events + ] = mock_rpc + + request = {} + await client.ingest_ad_events(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.ingest_ad_events(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + ingestion_service.IngestAdEventsRequest(), + {}, + ], +) +async def test_ingest_ad_events_async(request_type, transport: str = "grpc_asyncio"): + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + ingestion_service.IngestAdEventsResponse() + ) + response = await client.ingest_ad_events(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = ingestion_service.IngestAdEventsRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, ingestion_service.IngestAdEventsResponse) + + +@pytest.mark.parametrize( + "request_type", + [ + ingestion_service.RetrieveRequestStatusRequest(), + {}, + ], +) +def test_retrieve_request_status(request_type, transport: str = "grpc"): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.retrieve_request_status), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = ingestion_service.RetrieveRequestStatusResponse() + response = client.retrieve_request_status(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = ingestion_service.RetrieveRequestStatusRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, ingestion_service.RetrieveRequestStatusResponse) + + +def test_retrieve_request_status_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = ingestion_service.RetrieveRequestStatusRequest( + request_id="request_id_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.retrieve_request_status), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.retrieve_request_status(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.RetrieveRequestStatusRequest( + request_id="request_id_value", + ) + assert args[0] == request_msg + + +def test_retrieve_request_status_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 = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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.retrieve_request_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.retrieve_request_status + ] = mock_rpc + request = {} + client.retrieve_request_status(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.retrieve_request_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 + + +@pytest.mark.asyncio +async def test_retrieve_request_status_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.retrieve_request_status + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.retrieve_request_status + ] = mock_rpc + + request = {} + await client.retrieve_request_status(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.retrieve_request_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 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + ingestion_service.RetrieveRequestStatusRequest(), + {}, + ], +) +async def test_retrieve_request_status_async( + request_type, transport: str = "grpc_asyncio" +): + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.retrieve_request_status), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + ingestion_service.RetrieveRequestStatusResponse() + ) + response = await client.retrieve_request_status(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = ingestion_service.RetrieveRequestStatusRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, ingestion_service.RetrieveRequestStatusResponse) + + +def test_ingest_audience_members_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 = IngestionServiceClient( + 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.ingest_audience_members + 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.ingest_audience_members + ] = mock_rpc + + request = {} + client.ingest_audience_members(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.ingest_audience_members(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_ingest_audience_members_rest_required_fields( + request_type=ingestion_service.IngestAudienceMembersRequest, +): + transport_class = transports.IngestionServiceRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseIngestAudienceMembers, + "_BaseIngestAudienceMembers__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + # verify required fields with non-default values are left alone + + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = ingestion_service.IngestAudienceMembersResponse() + # 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 = ingestion_service.IngestAudienceMembersResponse.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.ingest_audience_members(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_remove_audience_members_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 = IngestionServiceClient( + 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.remove_audience_members + 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.remove_audience_members + ] = mock_rpc + + request = {} + client.remove_audience_members(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.remove_audience_members(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_remove_audience_members_rest_required_fields( + request_type=ingestion_service.RemoveAudienceMembersRequest, +): + transport_class = transports.IngestionServiceRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseRemoveAudienceMembers, + "_BaseRemoveAudienceMembers__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + # verify required fields with non-default values are left alone + + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = ingestion_service.RemoveAudienceMembersResponse() + # 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 = ingestion_service.RemoveAudienceMembersResponse.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.remove_audience_members(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_remove_all_audience_members_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 = IngestionServiceClient( + 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.remove_all_audience_members + 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.remove_all_audience_members + ] = mock_rpc + + request = {} + client.remove_all_audience_members(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.remove_all_audience_members(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_remove_all_audience_members_rest_required_fields( + request_type=ingestion_service.RemoveAllAudienceMembersRequest, +): + transport_class = transports.IngestionServiceRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseRemoveAllAudienceMembers, + "_BaseRemoveAllAudienceMembers__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + # verify required fields with non-default values are left alone + + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = ingestion_service.RemoveAllAudienceMembersResponse() + # 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 = ingestion_service.RemoveAllAudienceMembersResponse.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.remove_all_audience_members(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_ingest_events_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 = IngestionServiceClient( + 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.ingest_events 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.ingest_events] = mock_rpc + + request = {} + client.ingest_events(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.ingest_events(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_ingest_events_rest_required_fields( + request_type=ingestion_service.IngestEventsRequest, +): transport_class = transports.IngestionServiceRestTransport request_init = {} @@ -2383,8 +2961,8 @@ def test_remove_audience_members_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveAudienceMembers, - "_BaseRemoveAudienceMembers__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseIngestEvents, + "_BaseIngestEvents__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -2403,7 +2981,7 @@ def test_remove_audience_members_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = ingestion_service.RemoveAudienceMembersResponse() + return_value = ingestion_service.IngestEventsResponse() # 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 @@ -2425,23 +3003,21 @@ def test_remove_audience_members_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.RemoveAudienceMembersResponse.pb( - return_value - ) + return_value = ingestion_service.IngestEventsResponse.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.remove_audience_members(request) + response = client.ingest_events(request) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_all_audience_members_rest_use_cached_wrapped_rpc(): +def test_ingest_users_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: @@ -2455,35 +3031,30 @@ def test_remove_all_audience_members_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.remove_all_audience_members - in client._transport._wrapped_methods - ) + assert client._transport.ingest_users 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.remove_all_audience_members - ] = mock_rpc + client._transport._wrapped_methods[client._transport.ingest_users] = mock_rpc request = {} - client.remove_all_audience_members(request) + client.ingest_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.remove_all_audience_members(request) + client.ingest_users(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_remove_all_audience_members_rest_required_fields( - request_type=ingestion_service.RemoveAllAudienceMembersRequest, +def test_ingest_users_rest_required_fields( + request_type=ingestion_service.IngestUsersRequest, ): transport_class = transports.IngestionServiceRestTransport @@ -2497,8 +3068,8 @@ def test_remove_all_audience_members_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveAllAudienceMembers, - "_BaseRemoveAllAudienceMembers__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseIngestUsers, + "_BaseIngestUsers__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -2517,7 +3088,7 @@ def test_remove_all_audience_members_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = ingestion_service.RemoveAllAudienceMembersResponse() + return_value = ingestion_service.IngestUsersResponse() # 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 @@ -2539,23 +3110,21 @@ def test_remove_all_audience_members_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.RemoveAllAudienceMembersResponse.pb( - return_value - ) + return_value = ingestion_service.IngestUsersResponse.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.remove_all_audience_members(request) + response = client.ingest_users(request) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_ingest_events_rest_use_cached_wrapped_rpc(): +def test_remove_users_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: @@ -2569,30 +3138,30 @@ def test_ingest_events_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.ingest_events in client._transport._wrapped_methods + assert client._transport.remove_users 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.ingest_events] = mock_rpc + client._transport._wrapped_methods[client._transport.remove_users] = mock_rpc request = {} - client.ingest_events(request) + client.remove_users(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.ingest_events(request) + client.remove_users(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_ingest_events_rest_required_fields( - request_type=ingestion_service.IngestEventsRequest, +def test_remove_users_rest_required_fields( + request_type=ingestion_service.RemoveUsersRequest, ): transport_class = transports.IngestionServiceRestTransport @@ -2606,8 +3175,8 @@ def test_ingest_events_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseIngestEvents, - "_BaseIngestEvents__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveUsers, + "_BaseRemoveUsers__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -2626,7 +3195,7 @@ def test_ingest_events_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = ingestion_service.IngestEventsResponse() + return_value = ingestion_service.RemoveUsersResponse() # 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 @@ -2648,14 +3217,14 @@ def test_ingest_events_rest_required_fields( response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.IngestEventsResponse.pb(return_value) + return_value = ingestion_service.RemoveUsersResponse.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.ingest_events(request) + response = client.remove_users(request) expected_params = [("$alt", "json;enum-encoding=int")] actual_params = req.call_args.kwargs["params"] @@ -3093,6 +3662,46 @@ def test_ingest_events_empty_call_grpc(): 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_ingest_users_empty_call_grpc(): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.ingest_users), "__call__") as call: + call.return_value = ingestion_service.IngestUsersResponse() + client.ingest_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.IngestUsersRequest() + 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_remove_users_empty_call_grpc(): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.remove_users), "__call__") as call: + call.return_value = ingestion_service.RemoveUsersResponse() + client.remove_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.RemoveUsersRequest() + 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_ingest_ad_events_empty_call_grpc(): @@ -3152,172 +3761,496 @@ def test_initialize_client_w_grpc_asyncio(): # This test is a coverage failsafe to make sure that totally empty calls, # i.e. request == None and no flattened fields passed, work. @pytest.mark.asyncio -async def test_ingest_audience_members_empty_call_grpc_asyncio(): +async def test_ingest_audience_members_empty_call_grpc_asyncio(): + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.ingest_audience_members), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + ingestion_service.IngestAudienceMembersResponse( + request_id="request_id_value", + ) + ) + await client.ingest_audience_members(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.IngestAudienceMembersRequest() + 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. +@pytest.mark.asyncio +async def test_remove_audience_members_empty_call_grpc_asyncio(): + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.remove_audience_members), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + ingestion_service.RemoveAudienceMembersResponse( + request_id="request_id_value", + ) + ) + await client.remove_audience_members(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.RemoveAudienceMembersRequest() + 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. +@pytest.mark.asyncio +async def test_remove_all_audience_members_empty_call_grpc_asyncio(): + client = IngestionServiceAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.remove_all_audience_members), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + ingestion_service.RemoveAllAudienceMembersResponse( + request_id="request_id_value", + ) + ) + await client.remove_all_audience_members(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.RemoveAllAudienceMembersRequest() + 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. +@pytest.mark.asyncio +async def test_ingest_events_empty_call_grpc_asyncio(): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport="grpc_asyncio", ) # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.ingest_audience_members), "__call__" - ) as call: + with mock.patch.object(type(client.transport.ingest_events), "__call__") as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.IngestAudienceMembersResponse( + ingestion_service.IngestEventsResponse( request_id="request_id_value", ) ) - await client.ingest_audience_members(request=None) + await client.ingest_events(request=None) # Establish that the underlying stub method was called. call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.IngestAudienceMembersRequest() + request_msg = ingestion_service.IngestEventsRequest() 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. @pytest.mark.asyncio -async def test_remove_audience_members_empty_call_grpc_asyncio(): +async def test_ingest_users_empty_call_grpc_asyncio(): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport="grpc_asyncio", ) # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.remove_audience_members), "__call__" - ) as call: + with mock.patch.object(type(client.transport.ingest_users), "__call__") as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.RemoveAudienceMembersResponse( + ingestion_service.IngestUsersResponse( request_id="request_id_value", ) ) - await client.remove_audience_members(request=None) + await client.ingest_users(request=None) # Establish that the underlying stub method was called. call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.RemoveAudienceMembersRequest() + request_msg = ingestion_service.IngestUsersRequest() 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. @pytest.mark.asyncio -async def test_remove_all_audience_members_empty_call_grpc_asyncio(): +async def test_remove_users_empty_call_grpc_asyncio(): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport="grpc_asyncio", ) # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.remove_all_audience_members), "__call__" - ) as call: + with mock.patch.object(type(client.transport.remove_users), "__call__") as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.RemoveAllAudienceMembersResponse( + ingestion_service.RemoveUsersResponse( request_id="request_id_value", ) ) - await client.remove_all_audience_members(request=None) + await client.remove_users(request=None) # Establish that the underlying stub method was called. call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.RemoveAllAudienceMembersRequest() + request_msg = ingestion_service.RemoveUsersRequest() 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. @pytest.mark.asyncio -async def test_ingest_events_empty_call_grpc_asyncio(): +async def test_ingest_ad_events_empty_call_grpc_asyncio(): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport="grpc_asyncio", ) # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.ingest_events), "__call__") as call: + with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.IngestEventsResponse( - request_id="request_id_value", - ) + ingestion_service.IngestAdEventsResponse() ) - await client.ingest_events(request=None) + await client.ingest_ad_events(request=None) # Establish that the underlying stub method was called. call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.IngestEventsRequest() + request_msg = ingestion_service.IngestAdEventsRequest() 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. @pytest.mark.asyncio -async def test_ingest_ad_events_empty_call_grpc_asyncio(): +async def test_retrieve_request_status_empty_call_grpc_asyncio(): client = IngestionServiceAsyncClient( credentials=async_anonymous_credentials(), transport="grpc_asyncio", ) # Mock the actual call, and fake the request. - with mock.patch.object(type(client.transport.ingest_ad_events), "__call__") as call: + with mock.patch.object( + type(client.transport.retrieve_request_status), "__call__" + ) as call: # Designate an appropriate return value for the call. call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.IngestAdEventsResponse() + ingestion_service.RetrieveRequestStatusResponse() ) - await client.ingest_ad_events(request=None) + await client.retrieve_request_status(request=None) # Establish that the underlying stub method was called. call.assert_called() _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.IngestAdEventsRequest() + request_msg = ingestion_service.RetrieveRequestStatusRequest() 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. -@pytest.mark.asyncio -async def test_retrieve_request_status_empty_call_grpc_asyncio(): - client = IngestionServiceAsyncClient( - credentials=async_anonymous_credentials(), - transport="grpc_asyncio", +def test_transport_kind_rest(): + transport = IngestionServiceClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_ingest_audience_members_rest_bad_request( + request_type=ingestion_service.IngestAudienceMembersRequest, +): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {} + 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.ingest_audience_members(request) + + +@pytest.mark.parametrize( + "request_type", + [ + ingestion_service.IngestAudienceMembersRequest, + dict, + ], +) +def test_ingest_audience_members_rest_call_success(request_type): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {} + 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 = ingestion_service.IngestAudienceMembersResponse( + request_id="request_id_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 = ingestion_service.IngestAudienceMembersResponse.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.ingest_audience_members(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, ingestion_service.IngestAudienceMembersResponse) + assert response.request_id == "request_id_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_ingest_audience_members_rest_interceptors(null_interceptor): + transport = transports.IngestionServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.IngestionServiceRestInterceptor(), + ) + client = IngestionServiceClient(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.IngestionServiceRestInterceptor, "post_ingest_audience_members" + ) as post, + mock.patch.object( + transports.IngestionServiceRestInterceptor, + "post_ingest_audience_members_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.IngestionServiceRestInterceptor, "pre_ingest_audience_members" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = ingestion_service.IngestAudienceMembersRequest.pb( + ingestion_service.IngestAudienceMembersRequest() + ) + 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 = ingestion_service.IngestAudienceMembersResponse.to_json( + ingestion_service.IngestAudienceMembersResponse() + ) + req.return_value.content = return_value + + request = ingestion_service.IngestAudienceMembersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = ingestion_service.IngestAudienceMembersResponse() + post_with_metadata.return_value = ( + ingestion_service.IngestAudienceMembersResponse(), + metadata, + ) + + client.ingest_audience_members( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_remove_audience_members_rest_bad_request( + request_type=ingestion_service.RemoveAudienceMembersRequest, +): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {} + 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.remove_audience_members(request) + + +@pytest.mark.parametrize( + "request_type", + [ + ingestion_service.RemoveAudienceMembersRequest, + dict, + ], +) +def test_remove_audience_members_rest_call_success(request_type): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {} + 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 = ingestion_service.RemoveAudienceMembersResponse( + request_id="request_id_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 = ingestion_service.RemoveAudienceMembersResponse.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.remove_audience_members(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, ingestion_service.RemoveAudienceMembersResponse) + assert response.request_id == "request_id_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_remove_audience_members_rest_interceptors(null_interceptor): + transport = transports.IngestionServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.IngestionServiceRestInterceptor(), ) + client = IngestionServiceClient(transport=transport) - # Mock the actual call, and fake the request. - with mock.patch.object( - type(client.transport.retrieve_request_status), "__call__" - ) as call: - # Designate an appropriate return value for the call. - call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( - ingestion_service.RetrieveRequestStatusResponse() + with ( + mock.patch.object(type(client.transport._session), "request") as req, + mock.patch.object(path_template, "transcode") as transcode, + mock.patch.object( + transports.IngestionServiceRestInterceptor, "post_remove_audience_members" + ) as post, + mock.patch.object( + transports.IngestionServiceRestInterceptor, + "post_remove_audience_members_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.IngestionServiceRestInterceptor, "pre_remove_audience_members" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = ingestion_service.RemoveAudienceMembersRequest.pb( + ingestion_service.RemoveAudienceMembersRequest() ) - await client.retrieve_request_status(request=None) + transcode.return_value = { + "method": "post", + "uri": "my_uri", + "body": pb_message, + "query_params": pb_message, + } - # Establish that the underlying stub method was called. - call.assert_called() - _, args, _ = call.mock_calls[0] - request_msg = ingestion_service.RetrieveRequestStatusRequest() - assert args[0] == request_msg + 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 = ingestion_service.RemoveAudienceMembersResponse.to_json( + ingestion_service.RemoveAudienceMembersResponse() + ) + req.return_value.content = return_value + + request = ingestion_service.RemoveAudienceMembersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = ingestion_service.RemoveAudienceMembersResponse() + post_with_metadata.return_value = ( + ingestion_service.RemoveAudienceMembersResponse(), + metadata, + ) + client.remove_audience_members( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) -def test_transport_kind_rest(): - transport = IngestionServiceClient.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_ingest_audience_members_rest_bad_request( - request_type=ingestion_service.IngestAudienceMembersRequest, +def test_remove_all_audience_members_rest_bad_request( + request_type=ingestion_service.RemoveAllAudienceMembersRequest, ): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -3339,17 +4272,17 @@ def test_ingest_audience_members_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.ingest_audience_members(request) + client.remove_all_audience_members(request) @pytest.mark.parametrize( "request_type", [ - ingestion_service.IngestAudienceMembersRequest, + ingestion_service.RemoveAllAudienceMembersRequest, dict, ], ) -def test_ingest_audience_members_rest_call_success(request_type): +def test_remove_all_audience_members_rest_call_success(request_type): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -3361,7 +4294,7 @@ def test_ingest_audience_members_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 = ingestion_service.IngestAudienceMembersResponse( + return_value = ingestion_service.RemoveAllAudienceMembersResponse( request_id="request_id_value", ) @@ -3370,20 +4303,22 @@ def test_ingest_audience_members_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.IngestAudienceMembersResponse.pb(return_value) + return_value = ingestion_service.RemoveAllAudienceMembersResponse.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.ingest_audience_members(request) + response = client.remove_all_audience_members(request) # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.IngestAudienceMembersResponse) + assert isinstance(response, ingestion_service.RemoveAllAudienceMembersResponse) assert response.request_id == "request_id_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_ingest_audience_members_rest_interceptors(null_interceptor): +def test_remove_all_audience_members_rest_interceptors(null_interceptor): transport = transports.IngestionServiceRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -3396,21 +4331,23 @@ def test_ingest_audience_members_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.IngestionServiceRestInterceptor, "post_ingest_audience_members" + transports.IngestionServiceRestInterceptor, + "post_remove_all_audience_members", ) as post, mock.patch.object( transports.IngestionServiceRestInterceptor, - "post_ingest_audience_members_with_metadata", + "post_remove_all_audience_members_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.IngestionServiceRestInterceptor, "pre_ingest_audience_members" + transports.IngestionServiceRestInterceptor, + "pre_remove_all_audience_members", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = ingestion_service.IngestAudienceMembersRequest.pb( - ingestion_service.IngestAudienceMembersRequest() + pb_message = ingestion_service.RemoveAllAudienceMembersRequest.pb( + ingestion_service.RemoveAllAudienceMembersRequest() ) transcode.return_value = { "method": "post", @@ -3422,24 +4359,24 @@ def test_ingest_audience_members_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 = ingestion_service.IngestAudienceMembersResponse.to_json( - ingestion_service.IngestAudienceMembersResponse() + return_value = ingestion_service.RemoveAllAudienceMembersResponse.to_json( + ingestion_service.RemoveAllAudienceMembersResponse() ) req.return_value.content = return_value - request = ingestion_service.IngestAudienceMembersRequest() + request = ingestion_service.RemoveAllAudienceMembersRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = ingestion_service.IngestAudienceMembersResponse() + post.return_value = ingestion_service.RemoveAllAudienceMembersResponse() post_with_metadata.return_value = ( - ingestion_service.IngestAudienceMembersResponse(), + ingestion_service.RemoveAllAudienceMembersResponse(), metadata, ) - client.ingest_audience_members( + client.remove_all_audience_members( request, metadata=[ ("key", "val"), @@ -3452,8 +4389,8 @@ def test_ingest_audience_members_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_remove_audience_members_rest_bad_request( - request_type=ingestion_service.RemoveAudienceMembersRequest, +def test_ingest_events_rest_bad_request( + request_type=ingestion_service.IngestEventsRequest, ): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -3475,17 +4412,17 @@ def test_remove_audience_members_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.remove_audience_members(request) + client.ingest_events(request) @pytest.mark.parametrize( "request_type", [ - ingestion_service.RemoveAudienceMembersRequest, + ingestion_service.IngestEventsRequest, dict, ], ) -def test_remove_audience_members_rest_call_success(request_type): +def test_ingest_events_rest_call_success(request_type): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -3497,7 +4434,7 @@ def test_remove_audience_members_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 = ingestion_service.RemoveAudienceMembersResponse( + return_value = ingestion_service.IngestEventsResponse( request_id="request_id_value", ) @@ -3506,20 +4443,20 @@ def test_remove_audience_members_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.RemoveAudienceMembersResponse.pb(return_value) + return_value = ingestion_service.IngestEventsResponse.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.remove_audience_members(request) + response = client.ingest_events(request) # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.RemoveAudienceMembersResponse) + assert isinstance(response, ingestion_service.IngestEventsResponse) assert response.request_id == "request_id_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_remove_audience_members_rest_interceptors(null_interceptor): +def test_ingest_events_rest_interceptors(null_interceptor): transport = transports.IngestionServiceRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -3532,21 +4469,21 @@ def test_remove_audience_members_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.IngestionServiceRestInterceptor, "post_remove_audience_members" + transports.IngestionServiceRestInterceptor, "post_ingest_events" ) as post, mock.patch.object( transports.IngestionServiceRestInterceptor, - "post_remove_audience_members_with_metadata", + "post_ingest_events_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.IngestionServiceRestInterceptor, "pre_remove_audience_members" + transports.IngestionServiceRestInterceptor, "pre_ingest_events" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = ingestion_service.RemoveAudienceMembersRequest.pb( - ingestion_service.RemoveAudienceMembersRequest() + pb_message = ingestion_service.IngestEventsRequest.pb( + ingestion_service.IngestEventsRequest() ) transcode.return_value = { "method": "post", @@ -3558,24 +4495,24 @@ def test_remove_audience_members_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 = ingestion_service.RemoveAudienceMembersResponse.to_json( - ingestion_service.RemoveAudienceMembersResponse() + return_value = ingestion_service.IngestEventsResponse.to_json( + ingestion_service.IngestEventsResponse() ) req.return_value.content = return_value - request = ingestion_service.RemoveAudienceMembersRequest() + request = ingestion_service.IngestEventsRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = ingestion_service.RemoveAudienceMembersResponse() + post.return_value = ingestion_service.IngestEventsResponse() post_with_metadata.return_value = ( - ingestion_service.RemoveAudienceMembersResponse(), + ingestion_service.IngestEventsResponse(), metadata, ) - client.remove_audience_members( + client.ingest_events( request, metadata=[ ("key", "val"), @@ -3588,8 +4525,8 @@ def test_remove_audience_members_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_remove_all_audience_members_rest_bad_request( - request_type=ingestion_service.RemoveAllAudienceMembersRequest, +def test_ingest_users_rest_bad_request( + request_type=ingestion_service.IngestUsersRequest, ): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -3611,17 +4548,17 @@ def test_remove_all_audience_members_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.remove_all_audience_members(request) + client.ingest_users(request) @pytest.mark.parametrize( "request_type", [ - ingestion_service.RemoveAllAudienceMembersRequest, + ingestion_service.IngestUsersRequest, dict, ], ) -def test_remove_all_audience_members_rest_call_success(request_type): +def test_ingest_users_rest_call_success(request_type): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -3633,7 +4570,7 @@ def test_remove_all_audience_members_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 = ingestion_service.RemoveAllAudienceMembersResponse( + return_value = ingestion_service.IngestUsersResponse( request_id="request_id_value", ) @@ -3642,22 +4579,20 @@ def test_remove_all_audience_members_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.RemoveAllAudienceMembersResponse.pb( - return_value - ) + return_value = ingestion_service.IngestUsersResponse.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.remove_all_audience_members(request) + response = client.ingest_users(request) # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.RemoveAllAudienceMembersResponse) + assert isinstance(response, ingestion_service.IngestUsersResponse) assert response.request_id == "request_id_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_remove_all_audience_members_rest_interceptors(null_interceptor): +def test_ingest_users_rest_interceptors(null_interceptor): transport = transports.IngestionServiceRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -3670,23 +4605,21 @@ def test_remove_all_audience_members_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.IngestionServiceRestInterceptor, - "post_remove_all_audience_members", + transports.IngestionServiceRestInterceptor, "post_ingest_users" ) as post, mock.patch.object( transports.IngestionServiceRestInterceptor, - "post_remove_all_audience_members_with_metadata", + "post_ingest_users_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.IngestionServiceRestInterceptor, - "pre_remove_all_audience_members", + transports.IngestionServiceRestInterceptor, "pre_ingest_users" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = ingestion_service.RemoveAllAudienceMembersRequest.pb( - ingestion_service.RemoveAllAudienceMembersRequest() + pb_message = ingestion_service.IngestUsersRequest.pb( + ingestion_service.IngestUsersRequest() ) transcode.return_value = { "method": "post", @@ -3698,24 +4631,24 @@ def test_remove_all_audience_members_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 = ingestion_service.RemoveAllAudienceMembersResponse.to_json( - ingestion_service.RemoveAllAudienceMembersResponse() + return_value = ingestion_service.IngestUsersResponse.to_json( + ingestion_service.IngestUsersResponse() ) req.return_value.content = return_value - request = ingestion_service.RemoveAllAudienceMembersRequest() + request = ingestion_service.IngestUsersRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = ingestion_service.RemoveAllAudienceMembersResponse() + post.return_value = ingestion_service.IngestUsersResponse() post_with_metadata.return_value = ( - ingestion_service.RemoveAllAudienceMembersResponse(), + ingestion_service.IngestUsersResponse(), metadata, ) - client.remove_all_audience_members( + client.ingest_users( request, metadata=[ ("key", "val"), @@ -3728,8 +4661,8 @@ def test_remove_all_audience_members_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_ingest_events_rest_bad_request( - request_type=ingestion_service.IngestEventsRequest, +def test_remove_users_rest_bad_request( + request_type=ingestion_service.RemoveUsersRequest, ): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -3751,17 +4684,17 @@ def test_ingest_events_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.ingest_events(request) + client.remove_users(request) @pytest.mark.parametrize( "request_type", [ - ingestion_service.IngestEventsRequest, + ingestion_service.RemoveUsersRequest, dict, ], ) -def test_ingest_events_rest_call_success(request_type): +def test_remove_users_rest_call_success(request_type): client = IngestionServiceClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -3773,7 +4706,7 @@ def test_ingest_events_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 = ingestion_service.IngestEventsResponse( + return_value = ingestion_service.RemoveUsersResponse( request_id="request_id_value", ) @@ -3782,20 +4715,20 @@ def test_ingest_events_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = ingestion_service.IngestEventsResponse.pb(return_value) + return_value = ingestion_service.RemoveUsersResponse.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.ingest_events(request) + response = client.remove_users(request) # Establish that the response is the type that we expect. - assert isinstance(response, ingestion_service.IngestEventsResponse) + assert isinstance(response, ingestion_service.RemoveUsersResponse) assert response.request_id == "request_id_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_ingest_events_rest_interceptors(null_interceptor): +def test_remove_users_rest_interceptors(null_interceptor): transport = transports.IngestionServiceRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -3808,21 +4741,21 @@ def test_ingest_events_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.IngestionServiceRestInterceptor, "post_ingest_events" + transports.IngestionServiceRestInterceptor, "post_remove_users" ) as post, mock.patch.object( transports.IngestionServiceRestInterceptor, - "post_ingest_events_with_metadata", + "post_remove_users_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.IngestionServiceRestInterceptor, "pre_ingest_events" + transports.IngestionServiceRestInterceptor, "pre_remove_users" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = ingestion_service.IngestEventsRequest.pb( - ingestion_service.IngestEventsRequest() + pb_message = ingestion_service.RemoveUsersRequest.pb( + ingestion_service.RemoveUsersRequest() ) transcode.return_value = { "method": "post", @@ -3834,24 +4767,24 @@ def test_ingest_events_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 = ingestion_service.IngestEventsResponse.to_json( - ingestion_service.IngestEventsResponse() + return_value = ingestion_service.RemoveUsersResponse.to_json( + ingestion_service.RemoveUsersResponse() ) req.return_value.content = return_value - request = ingestion_service.IngestEventsRequest() + request = ingestion_service.RemoveUsersRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = ingestion_service.IngestEventsResponse() + post.return_value = ingestion_service.RemoveUsersResponse() post_with_metadata.return_value = ( - ingestion_service.IngestEventsResponse(), + ingestion_service.RemoveUsersResponse(), metadata, ) - client.ingest_events( + client.remove_users( request, metadata=[ ("key", "val"), @@ -4219,6 +5152,44 @@ def test_ingest_events_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_ingest_users_empty_call_rest(): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.ingest_users), "__call__") as call: + client.ingest_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.IngestUsersRequest() + 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_remove_users_empty_call_rest(): + client = IngestionServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.remove_users), "__call__") as call: + client.remove_users(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = ingestion_service.RemoveUsersRequest() + 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_ingest_ad_events_empty_call_rest(): @@ -4296,6 +5267,8 @@ def test_ingestion_service_base_transport(): "remove_audience_members", "remove_all_audience_members", "ingest_events", + "ingest_users", + "remove_users", "ingest_ad_events", "retrieve_request_status", ) @@ -4575,6 +5548,12 @@ def test_ingestion_service_client_transport_session_collision(transport_name): session1 = client1.transport.ingest_events._session session2 = client2.transport.ingest_events._session assert session1 != session2 + session1 = client1.transport.ingest_users._session + session2 = client2.transport.ingest_users._session + assert session1 != session2 + session1 = client1.transport.remove_users._session + session2 = client2.transport.remove_users._session + assert session1 != session2 session1 = client1.transport.ingest_ad_events._session session2 = client2.transport.ingest_ad_events._session assert session1 != session2 diff --git a/packages/google-apps-chat/google/apps/chat_v1/types/membership.py b/packages/google-apps-chat/google/apps/chat_v1/types/membership.py index 55b6d558d26f..9f66c52351f2 100644 --- a/packages/google-apps-chat/google/apps/chat_v1/types/membership.py +++ b/packages/google-apps-chat/google/apps/chat_v1/types/membership.py @@ -67,9 +67,12 @@ class Membership(proto.Message): Optional. The Google Chat user or app the membership corresponds to. If your Chat app `authenticates as a user `__, - the output populates the + the output only populates the `user `__ - ``name`` and ``type``. + ``name`` and ``type`` fields for both internal and external + users, unless they are members of the space or have a prior + affinity, like a direct message (DM) conversation, with the + calling user. This field is a member of `oneof`_ ``memberType``. group_member (google.apps.chat_v1.types.Group): diff --git a/packages/google-apps-chat/google/apps/chat_v1/types/message.py b/packages/google-apps-chat/google/apps/chat_v1/types/message.py index c394ffbdd8a0..66c1297aa9f1 100644 --- a/packages/google-apps-chat/google/apps/chat_v1/types/message.py +++ b/packages/google-apps-chat/google/apps/chat_v1/types/message.py @@ -90,9 +90,12 @@ class Message(proto.Message): Output only. The user who created the message. If your Chat app `authenticates as a user `__, - the output populates the + the output only populates the `user `__ - ``name`` and ``type``. + ``name`` and ``type`` fields for both internal and external + users, unless they are members of the space or have a prior + affinity, like a direct message (DM) conversation, with the + calling user. create_time (google.protobuf.timestamp_pb2.Timestamp): Optional. Immutable. For spaces created in Chat, the time at which the message was created. diff --git a/packages/google-apps-chat/google/apps/chat_v1/types/user.py b/packages/google-apps-chat/google/apps/chat_v1/types/user.py index 325ca357122a..96196915663f 100644 --- a/packages/google-apps-chat/google/apps/chat_v1/types/user.py +++ b/packages/google-apps-chat/google/apps/chat_v1/types/user.py @@ -28,11 +28,12 @@ class User(proto.Message): - r"""A user in Google Chat. When returned as an output from a request, if - your Chat app `authenticates as a + r"""If your Chat app `authenticates as a user `__, - the output for a ``User`` resource only populates the user's - ``name`` and ``type``. + the output for a ``User`` resource (such as in the Messages and + Memberships APIs) only populates the ``name`` and ``type`` fields + for both internal and external users, unless they are members of the + space or have prior affinity with the calling user. Attributes: name (str): @@ -64,6 +65,38 @@ class User(proto.Message): will be returned from the API. display_name (str): Output only. The user's display name. + + Populated for both app authentication and user + authentication. This field is always populated for requests + made with `app + authentication `__. + When calling the Messages and Memberships APIs with `user + authentication `__, + this field is populated for both internal and external users + for the ``sender`` of a message, users within + ``annotations`` (such as user mentions), and within + ``Membership`` resources, provided the user is a member of + the space or has prior affinity with the calling user. + avatar_url (str): + Output only. The user's avatar image URL. + + When calling the Messages and Memberships APIs with `user + authentication `__, + this field is populated for both internal and external users + for the ``sender`` of a message, users within + ``annotations`` (such as user mentions), and within + ``Membership`` resources, provided the user is a member of + the space or has prior affinity with the calling user. + email (str): + Output only. The user's email address. + + When calling the Messages and Memberships APIs with `user + authentication `__, + this field is populated for both internal and external users + for the ``sender`` of a message, users within + ``annotations`` (such as user mentions), and within + ``Membership`` resources, provided the user is a member of + the space or has prior affinity with the calling user. domain_id (str): Unique identifier of the user's Google Workspace domain. @@ -71,7 +104,9 @@ class User(proto.Message): User type. is_anonymous (bool): Output only. When ``true``, the user is deleted or their - profile is not visible. + profile is not visible, such as when a user is mentioned in + a space without being a member and without prior affinity + with the calling user. """ class Type(proto.Enum): @@ -98,6 +133,14 @@ class Type(proto.Enum): proto.STRING, number=2, ) + avatar_url: str = proto.Field( + proto.STRING, + number=3, + ) + email: str = proto.Field( + proto.STRING, + number=4, + ) domain_id: str = proto.Field( proto.STRING, number=6, diff --git a/packages/google-apps-chat/tests/unit/gapic/chat_v1/test_chat_service.py b/packages/google-apps-chat/tests/unit/gapic/chat_v1/test_chat_service.py index 1b84cdfca864..08b4162ccc95 100644 --- a/packages/google-apps-chat/tests/unit/gapic/chat_v1/test_chat_service.py +++ b/packages/google-apps-chat/tests/unit/gapic/chat_v1/test_chat_service.py @@ -31446,6 +31446,8 @@ def test_create_message_rest_call_success(request_type): "sender": { "name": "name_value", "display_name": "display_name_value", + "avatar_url": "avatar_url_value", + "email": "email_value", "domain_id": "domain_id_value", "type_": 1, "is_anonymous": True, @@ -32687,6 +32689,8 @@ def test_update_message_rest_call_success(request_type): "sender": { "name": "name_value", "display_name": "display_name_value", + "avatar_url": "avatar_url_value", + "email": "email_value", "domain_id": "domain_id_value", "type_": 1, "is_anonymous": True, @@ -35532,6 +35536,8 @@ def test_create_membership_rest_call_success(request_type): "member": { "name": "name_value", "display_name": "display_name_value", + "avatar_url": "avatar_url_value", + "email": "email_value", "domain_id": "domain_id_value", "type_": 1, "is_anonymous": True, @@ -35752,6 +35758,8 @@ def test_update_membership_rest_call_success(request_type): "member": { "name": "name_value", "display_name": "display_name_value", + "avatar_url": "avatar_url_value", + "email": "email_value", "domain_id": "domain_id_value", "type_": 1, "is_anonymous": True, @@ -36107,6 +36115,8 @@ def test_create_reaction_rest_call_success(request_type): "user": { "name": "name_value", "display_name": "display_name_value", + "avatar_url": "avatar_url_value", + "email": "email_value", "domain_id": "domain_id_value", "type_": 1, "is_anonymous": True, diff --git a/packages/google-cloud-api-gateway/google/cloud/apigateway_v1/types/apigateway.py b/packages/google-cloud-api-gateway/google/cloud/apigateway_v1/types/apigateway.py index d703a81a5999..50ee30cc1375 100644 --- a/packages/google-cloud-api-gateway/google/cloud/apigateway_v1/types/apigateway.py +++ b/packages/google-cloud-api-gateway/google/cloud/apigateway_v1/types/apigateway.py @@ -427,10 +427,26 @@ class StreamingMode(proto.Enum): STREAMING_MODE_UNSPECIFIED (0): Lets the service select the streaming mode. STREAMING_MODE_ENABLED (1): - Enables streaming. The gateway supports - Server-Sent Events (SSE), HTTP/2 streaming, HTTP - chunked transfer, WebSockets, and gRPC - bidirectional streaming. + Enables streaming. The gateway supports Server-Sent Events + (SSE), HTTP/2 streaming, HTTP chunked transfer, WebSockets, + and gRPC bidirectional streaming. + + The API config's backend ``deadline`` field governs how long + a request (unary or streaming) may run. + + Enabling streaming on a gateway does not change how the + ``deadline`` field behaves on an SSE or chunked-transfer + path. The deadline remains a wall-clock bound on the + complete response, so a stream is cut once the deadline + elapses regardless of how much data it is sending. The + default is 15 seconds and the maximum is 3,600 seconds. + + On gRPC streaming and WebSockets, ``deadline`` bounds the + gap between messages instead: default 300 seconds; set + ``deadline`` to change it, up to 3,600 seconds. On + WebSockets, a ``deadline`` of less than 300 seconds is + ignored and a 300-second minimum applies. The maximum total + request duration is always 3,600 seconds, not configurable. """ STREAMING_MODE_UNSPECIFIED = 0 diff --git a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/__init__.py b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/__init__.py index 2f4e90302eac..c5bd96e4650e 100644 --- a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/__init__.py +++ b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/__init__.py @@ -121,6 +121,8 @@ OpenSessionResponse, OpenTableRequest, OpenTableResponse, + SessionCheckAndMutateRowRequest, + SessionCheckAndMutateRowResponse, SessionClientConfiguration, SessionMutateRowRequest, SessionMutateRowResponse, @@ -209,6 +211,8 @@ "RowSet", "SampleRowKeysRequest", "SampleRowKeysResponse", + "SessionCheckAndMutateRowRequest", + "SessionCheckAndMutateRowResponse", "SessionClientConfiguration", "SessionMutateRowRequest", "SessionMutateRowResponse", diff --git a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/__init__.py b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/__init__.py index 60a6e3e7da6d..9be40342b1ac 100644 --- a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/__init__.py +++ b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/__init__.py @@ -101,6 +101,8 @@ OpenSessionResponse, OpenTableRequest, OpenTableResponse, + SessionCheckAndMutateRowRequest, + SessionCheckAndMutateRowResponse, SessionClientConfiguration, SessionMutateRowRequest, SessionMutateRowResponse, @@ -196,6 +198,8 @@ "OpenSessionResponse", "OpenTableRequest", "OpenTableResponse", + "SessionCheckAndMutateRowRequest", + "SessionCheckAndMutateRowResponse", "SessionClientConfiguration", "SessionMutateRowRequest", "SessionMutateRowResponse", diff --git a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/session.py b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/session.py index 0463e542cf7e..bbc59b286c12 100644 --- a/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/session.py +++ b/packages/google-cloud-bigtable/google/cloud/bigtable_v2/types/session.py @@ -57,6 +57,8 @@ "SessionReadRowResponse", "SessionMutateRowRequest", "SessionMutateRowResponse", + "SessionCheckAndMutateRowRequest", + "SessionCheckAndMutateRowResponse", "SessionParametersResponse", "HeartbeatResponse", "GoAwayResponse", @@ -939,6 +941,9 @@ class TableRequest(proto.Message): This field is a member of `oneof`_ ``payload``. mutate_row (google.cloud.bigtable_v2.types.SessionMutateRowRequest): + This field is a member of `oneof`_ ``payload``. + check_and_mutate_row (google.cloud.bigtable_v2.types.SessionCheckAndMutateRowRequest): + This field is a member of `oneof`_ ``payload``. """ @@ -954,6 +959,12 @@ class TableRequest(proto.Message): oneof="payload", message="SessionMutateRowRequest", ) + check_and_mutate_row: "SessionCheckAndMutateRowRequest" = proto.Field( + proto.MESSAGE, + number=4, + oneof="payload", + message="SessionCheckAndMutateRowRequest", + ) class TableResponse(proto.Message): @@ -972,6 +983,9 @@ class TableResponse(proto.Message): This field is a member of `oneof`_ ``payload``. mutate_row (google.cloud.bigtable_v2.types.SessionMutateRowResponse): + This field is a member of `oneof`_ ``payload``. + check_and_mutate_row (google.cloud.bigtable_v2.types.SessionCheckAndMutateRowResponse): + This field is a member of `oneof`_ ``payload``. """ @@ -987,6 +1001,12 @@ class TableResponse(proto.Message): oneof="payload", message="SessionMutateRowResponse", ) + check_and_mutate_row: "SessionCheckAndMutateRowResponse" = proto.Field( + proto.MESSAGE, + number=4, + oneof="payload", + message="SessionCheckAndMutateRowResponse", + ) class AuthorizedViewRequest(proto.Message): @@ -1006,6 +1026,9 @@ class AuthorizedViewRequest(proto.Message): This field is a member of `oneof`_ ``payload``. mutate_row (google.cloud.bigtable_v2.types.SessionMutateRowRequest): + This field is a member of `oneof`_ ``payload``. + check_and_mutate_row (google.cloud.bigtable_v2.types.SessionCheckAndMutateRowRequest): + This field is a member of `oneof`_ ``payload``. """ @@ -1021,6 +1044,12 @@ class AuthorizedViewRequest(proto.Message): oneof="payload", message="SessionMutateRowRequest", ) + check_and_mutate_row: "SessionCheckAndMutateRowRequest" = proto.Field( + proto.MESSAGE, + number=4, + oneof="payload", + message="SessionCheckAndMutateRowRequest", + ) class AuthorizedViewResponse(proto.Message): @@ -1040,6 +1069,9 @@ class AuthorizedViewResponse(proto.Message): This field is a member of `oneof`_ ``payload``. mutate_row (google.cloud.bigtable_v2.types.SessionMutateRowResponse): + This field is a member of `oneof`_ ``payload``. + check_and_mutate_row (google.cloud.bigtable_v2.types.SessionCheckAndMutateRowResponse): + This field is a member of `oneof`_ ``payload``. """ @@ -1055,6 +1087,12 @@ class AuthorizedViewResponse(proto.Message): oneof="payload", message="SessionMutateRowResponse", ) + check_and_mutate_row: "SessionCheckAndMutateRowResponse" = proto.Field( + proto.MESSAGE, + number=4, + oneof="payload", + message="SessionCheckAndMutateRowResponse", + ) class MaterializedViewRequest(proto.Message): @@ -1167,6 +1205,55 @@ class SessionMutateRowResponse(proto.Message): r"""Internal usage only.""" +class SessionCheckAndMutateRowRequest(proto.Message): + r"""Internal usage only. + + Attributes: + key (bytes): + + predicate_filter (google.cloud.bigtable_v2.types.RowFilter): + + true_mutations (MutableSequence[google.cloud.bigtable_v2.types.Mutation]): + + false_mutations (MutableSequence[google.cloud.bigtable_v2.types.Mutation]): + + """ + + key: bytes = proto.Field( + proto.BYTES, + number=1, + ) + predicate_filter: data.RowFilter = proto.Field( + proto.MESSAGE, + number=2, + message=data.RowFilter, + ) + true_mutations: MutableSequence[data.Mutation] = proto.RepeatedField( + proto.MESSAGE, + number=3, + message=data.Mutation, + ) + false_mutations: MutableSequence[data.Mutation] = proto.RepeatedField( + proto.MESSAGE, + number=4, + message=data.Mutation, + ) + + +class SessionCheckAndMutateRowResponse(proto.Message): + r"""Internal usage only. + + Attributes: + predicate_matched (bool): + + """ + + predicate_matched: bool = proto.Field( + proto.BOOL, + number=1, + ) + + class SessionParametersResponse(proto.Message): r"""Internal usage only. diff --git a/packages/google-cloud-commerce-consumer-procurement/.repo-metadata.json b/packages/google-cloud-commerce-consumer-procurement/.repo-metadata.json index e1dd1f558b0c..b31431b52477 100644 --- a/packages/google-cloud-commerce-consumer-procurement/.repo-metadata.json +++ b/packages/google-cloud-commerce-consumer-procurement/.repo-metadata.json @@ -1,5 +1,5 @@ { - "api_description": "Enables consumers to procure products served by Cloud Marketplace platform", + "api_description": "Enables consumers to procure products served by Cloud Marketplace platform.", "api_id": "cloudcommerceconsumerprocurement.googleapis.com", "api_shortname": "cloudcommerceconsumerprocurement", "client_documentation": "https://cloud.google.com/python/docs/reference/procurement/latest", diff --git a/packages/google-cloud-commerce-consumer-procurement/README.rst b/packages/google-cloud-commerce-consumer-procurement/README.rst index e1b7dc0c0bfc..35751fdfd672 100644 --- a/packages/google-cloud-commerce-consumer-procurement/README.rst +++ b/packages/google-cloud-commerce-consumer-procurement/README.rst @@ -3,7 +3,7 @@ Python Client for Cloud Commerce Consumer Procurement |preview| |pypi| |versions| -`Cloud Commerce Consumer Procurement`_: Enables consumers to procure products served by Cloud Marketplace platform +`Cloud Commerce Consumer Procurement`_: Enables consumers to procure products served by Cloud Marketplace platform. - `Client Library Documentation`_ - `Product Documentation`_ diff --git a/packages/google-cloud-commerce-consumer-procurement/docs/README.rst b/packages/google-cloud-commerce-consumer-procurement/docs/README.rst index e1b7dc0c0bfc..35751fdfd672 100644 --- a/packages/google-cloud-commerce-consumer-procurement/docs/README.rst +++ b/packages/google-cloud-commerce-consumer-procurement/docs/README.rst @@ -3,7 +3,7 @@ Python Client for Cloud Commerce Consumer Procurement |preview| |pypi| |versions| -`Cloud Commerce Consumer Procurement`_: Enables consumers to procure products served by Cloud Marketplace platform +`Cloud Commerce Consumer Procurement`_: Enables consumers to procure products served by Cloud Marketplace platform. - `Client Library Documentation`_ - `Product Documentation`_ diff --git a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/async_client.py b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/async_client.py index ee283004beeb..1a371adfd630 100644 --- a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/async_client.py +++ b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/async_client.py @@ -1708,19 +1708,20 @@ async def sample_get_private_offer_document(): Returns: google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state + DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and + new documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a + custom EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, + and is returned in Service.document_requirement. """ # Create or coerce a protobuf request object. @@ -1830,19 +1831,20 @@ async def sample_create_private_offer_document(): Returns: google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state + DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and + new documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a + custom EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, + and is returned in Service.document_requirement. """ # Create or coerce a protobuf request object. @@ -1953,19 +1955,20 @@ async def sample_update_private_offer_document(): Returns: google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state + DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and + new documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a + custom EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, + and is returned in Service.document_requirement. """ # Create or coerce a protobuf request object. diff --git a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/client.py b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/client.py index 03b12a2686f5..026525f21c8e 100644 --- a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/client.py +++ b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/client.py @@ -2072,19 +2072,20 @@ def sample_get_private_offer_document(): Returns: google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state + DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and + new documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a + custom EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, + and is returned in Service.document_requirement. """ # Create or coerce a protobuf request object. @@ -2193,19 +2194,20 @@ def sample_create_private_offer_document(): Returns: google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state + DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and + new documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a + custom EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, + and is returned in Service.document_requirement. """ # Create or coerce a protobuf request object. @@ -2316,19 +2318,20 @@ def sample_update_private_offer_document(): Returns: google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state + DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and + new documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a + custom EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, + and is returned in Service.document_requirement. """ # Create or coerce a protobuf request object. diff --git a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/transports/rest.py b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/transports/rest.py index 21bafd1a09e9..aa6aecde18dc 100644 --- a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/transports/rest.py +++ b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/services/commerce_transaction/transports/rest.py @@ -1840,19 +1840,20 @@ def __call__( Returns: ~.private_offer.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state DRAFT, + the set of child documents is immutable. Existing + documents cannot be updated or deleted, and new + documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a custom + EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, and + is returned in ``Service.document_requirement``. """ @@ -2381,19 +2382,20 @@ def __call__( Returns: ~.private_offer.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state DRAFT, + the set of child documents is immutable. Existing + documents cannot be updated or deleted, and new + documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a custom + EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, and + is returned in ``Service.document_requirement``. """ @@ -4529,19 +4531,20 @@ def __call__( Returns: ~.private_offer.PrivateOfferDocument: - Message describing the - PrivateOfferDocument resource. Used to - attach documents to a private offer in - state DRAFT. Once a private offer is no - longer in state DRAFT, the set of child - documents is immutable. Existing - documents cannot be updated or deleted, - and new documents cannot be added. - - A private offer must include a EULA, - either by assigning a standard EULA or - attaching a custom EULA document, or a - statement of work document. + Message describing the PrivateOfferDocument resource. + Used to attach documents to a private offer in state + DRAFT. Once a private offer is no longer in state DRAFT, + the set of child documents is immutable. Existing + documents cannot be updated or deleted, and new + documents cannot be added. + + A private offer may have at most one document of each + type, and may not have both a standard EULA and a custom + EULA. + + Which document types are required, optional, or not + permitted depends on the service the offer is for, and + is returned in ``Service.document_requirement``. """ diff --git a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/private_offer.py b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/private_offer.py index d484de715c2f..75d76ab135c1 100644 --- a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/private_offer.py +++ b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/private_offer.py @@ -1629,15 +1629,18 @@ class AdditionalContractValue(proto.Message): class PrivateOfferDocument(proto.Message): - r"""Message describing the PrivateOfferDocument resource. - Used to attach documents to a private offer in state DRAFT. Once - a private offer is no longer in state DRAFT, the set of child - documents is immutable. Existing documents cannot be updated or - deleted, and new documents cannot be added. + r"""Message describing the PrivateOfferDocument resource. Used to attach + documents to a private offer in state DRAFT. Once a private offer is + no longer in state DRAFT, the set of child documents is immutable. + Existing documents cannot be updated or deleted, and new documents + cannot be added. - A private offer must include a EULA, either by assigning a - standard EULA or attaching a custom EULA document, or a - statement of work document. + A private offer may have at most one document of each type, and may + not have both a standard EULA and a custom EULA. + + Which document types are required, optional, or not permitted + depends on the service the offer is for, and is returned in + ``Service.document_requirement``. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -1683,33 +1686,45 @@ class DocumentType(proto.Enum): CUSTOM_END_USER_LICENSE_AGREEMENT (1): The document is a custom EULA used in place of the standard product EULA. A private offer may not have more than one - custom EULA document. + custom EULA document, and may not have both a custom EULA + and a standard EULA. If this enum value is set, then mime_type and inline_content must be set. STATEMENT_OF_WORK (2): - The document is the statement of work required by the `Cloud - Marketplace Product Specific - Terms `__ - for all Professional Services product private offers. This - document type is not permitted for private offers of any - other product type. A private offer may not have more than - one statement of work document. + The document is the statement of work described by the + `Cloud Marketplace Product Specific + Terms `__. + A private offer may not have more than one statement of work + document. + + Whether this document type is required, optional, or not + permitted depends on the service; see + ``Service.document_requirement``. The mime_type and inline_content fields must be set. STANDARD_END_USER_LICENSE_AGREEMENT_V1 (3): - The document is the Marketplace standard - EULA, with the following link: + The document is the Marketplace standard EULA, with the + following link: https://cloud.google.com/terms/marketplace/eula-standard-v1-12102020. - Existing offers may have this document type, but - this is not permitted for new offers. + + This edition has been superseded by + STANDARD_END_USER_LICENSE_AGREEMENT_V2. Offers created + before that edition was published may have this document + type, but it is not permitted on any service for new offers. STANDARD_END_USER_LICENSE_AGREEMENT_V2 (4): The document is the Marketplace standard EULA, with the following link: https://cloud.google.com/terms/marketplace/eula-standard-v2-01272021 New offers using Standard EULAs should set this enum value. - This is not permitted for Professional Services products. + A private offer may not have more than one standard EULA + document, and may not have both a standard EULA and a custom + EULA. + + Whether this document type is required, optional, or not + permitted depends on the service; see + ``Service.document_requirement``. The mime_type and inline_content fields must not be set. """ diff --git a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/service.py b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/service.py index c4326704d2aa..fa70f0fb6767 100644 --- a/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/service.py +++ b/packages/google-cloud-commerceproducer/google/cloud/commerceproducer_v1beta/types/service.py @@ -19,6 +19,8 @@ import proto # type: ignore +from google.cloud.commerceproducer_v1beta.types import private_offer + __protobuf__ = proto.module( package="google.cloud.commerceproducer.v1beta", manifest={ @@ -37,8 +39,127 @@ class Service(proto.Message): Output only. Title of the service. Not included for ``SERVICE_VIEW_BASIC``. + document_requirement (google.cloud.commerceproducer_v1beta.types.Service.DocumentRequirement): + Output only. Document requirement for private offers on this + service. + + Constraints that apply to every service, such as the + restriction against attaching both a standard and a custom + EULA, are documented on ``PrivateOfferDocument`` and are not + represented here. + product_type (google.cloud.commerceproducer_v1beta.types.Service.ProductType): + Output only. Type of the product this service + commercializes. """ + class ProductType(proto.Enum): + r"""The type of the product this service commercializes. + + Every service has a type, but only the types listed below are + exposed. A service whose type is not one of the listed values + reports ``PRODUCT_TYPE_UNSPECIFIED``. + + Values may be added over time. Clients must handle unrecognized + values. When new values are added, the ProductType for an existing + service may change. Clients must also be able to handle a change in + ProductType. + + Values: + PRODUCT_TYPE_UNSPECIFIED (0): + The service has a type, but it is not one of + the types exposed below. + SOFTWARE_AS_A_SERVICE (1): + Represents a software-as-a-service product. + See + https://docs.cloud.google.com/marketplace/docs/partners/integrated-saas + ANALYTICS_HUB_LISTING (2): + Represents a data product on BigQuery sharing + (formerly Analytics Hub). See + https://docs.cloud.google.com/marketplace/docs/partners/data + PROFESSIONAL_SERVICES (3): + Represents a professional services product. + See + https://docs.cloud.google.com/marketplace/docs/partners/professional-services + """ + + PRODUCT_TYPE_UNSPECIFIED = 0 + SOFTWARE_AS_A_SERVICE = 1 + ANALYTICS_HUB_LISTING = 2 + PROFESSIONAL_SERVICES = 3 + + class DocumentRequirement(proto.Message): + r"""Requirements and constraints for documents attached to + private offers. + + Attributes: + document_type_requirements (MutableSequence[google.cloud.commerceproducer_v1beta.types.Service.DocumentRequirement.DocumentTypeRequirement]): + Document requirements for private offers on + this service. + Each document type appears at most once. The + order of entries is not significant. A document + type that is not present in this list is not + permitted for private offers on this service. + """ + + class DocumentTypeRequirement(proto.Message): + r"""Requirement specification for a specific document type. + + Attributes: + document_type (google.cloud.commerceproducer_v1beta.types.PrivateOfferDocument.DocumentType): + The document type. + requirement_level (google.cloud.commerceproducer_v1beta.types.Service.DocumentRequirement.DocumentTypeRequirement.RequirementLevel): + The requirement level for this document type. + """ + + class RequirementLevel(proto.Enum): + r"""Requirement level for the document type. + + Values: + REQUIREMENT_LEVEL_UNSPECIFIED (0): + Unspecified requirement level. Do not use. + REQUIRED (1): + The document type is mandatory for private + offers on this service. Exactly one document of + this type must be attached. + OPTIONAL (2): + The document type is optional for private + offers on this service. At most one document of + this type may be attached. + NOT_ALLOWED (3): + The document type is not permitted for private offers on + this service. No document of this type may be attached. + + A document type omitted from ``document_type_requirements`` + is also not permitted. This value is used to state the + restriction explicitly. + """ + + REQUIREMENT_LEVEL_UNSPECIFIED = 0 + REQUIRED = 1 + OPTIONAL = 2 + NOT_ALLOWED = 3 + + document_type: private_offer.PrivateOfferDocument.DocumentType = ( + proto.Field( + proto.ENUM, + number=1, + enum=private_offer.PrivateOfferDocument.DocumentType, + ) + ) + requirement_level: "Service.DocumentRequirement.DocumentTypeRequirement.RequirementLevel" = proto.Field( + proto.ENUM, + number=2, + enum="Service.DocumentRequirement.DocumentTypeRequirement.RequirementLevel", + ) + + document_type_requirements: MutableSequence[ + "Service.DocumentRequirement.DocumentTypeRequirement" + ] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message="Service.DocumentRequirement.DocumentTypeRequirement", + ) + name: str = proto.Field( proto.STRING, number=1, @@ -47,6 +168,16 @@ class Service(proto.Message): proto.STRING, number=2, ) + document_requirement: DocumentRequirement = proto.Field( + proto.MESSAGE, + number=3, + message=DocumentRequirement, + ) + product_type: ProductType = proto.Field( + proto.ENUM, + number=4, + enum=ProductType, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-commerceproducer/tests/unit/gapic/commerceproducer_v1beta/test_commerce_transaction.py b/packages/google-cloud-commerceproducer/tests/unit/gapic/commerceproducer_v1beta/test_commerce_transaction.py index fa1a6fc35a7c..d02d6735629b 100644 --- a/packages/google-cloud-commerceproducer/tests/unit/gapic/commerceproducer_v1beta/test_commerce_transaction.py +++ b/packages/google-cloud-commerceproducer/tests/unit/gapic/commerceproducer_v1beta/test_commerce_transaction.py @@ -1667,6 +1667,7 @@ def test_get_service(request_type, transport: str = "grpc"): call.return_value = service.Service( name="name_value", title="title_value", + product_type=service.Service.ProductType.SOFTWARE_AS_A_SERVICE, ) response = client.get_service(request) @@ -1680,6 +1681,7 @@ def test_get_service(request_type, transport: str = "grpc"): assert isinstance(response, service.Service) assert response.name == "name_value" assert response.title == "title_value" + assert response.product_type == service.Service.ProductType.SOFTWARE_AS_A_SERVICE def test_get_service_non_empty_request_with_auto_populated_field(): @@ -1813,6 +1815,7 @@ async def test_get_service_async(request_type, transport: str = "grpc_asyncio"): service.Service( name="name_value", title="title_value", + product_type=service.Service.ProductType.SOFTWARE_AS_A_SERVICE, ) ) response = await client.get_service(request) @@ -1827,6 +1830,7 @@ async def test_get_service_async(request_type, transport: str = "grpc_asyncio"): assert isinstance(response, service.Service) assert response.name == "name_value" assert response.title == "title_value" + assert response.product_type == service.Service.ProductType.SOFTWARE_AS_A_SERVICE def test_get_service_field_headers(): @@ -14188,6 +14192,7 @@ async def test_get_service_empty_call_grpc_asyncio(): service.Service( name="name_value", title="title_value", + product_type=service.Service.ProductType.SOFTWARE_AS_A_SERVICE, ) ) await client.get_service(request=None) @@ -14945,6 +14950,7 @@ def test_get_service_rest_call_success(request_type): return_value = service.Service( name="name_value", title="title_value", + product_type=service.Service.ProductType.SOFTWARE_AS_A_SERVICE, ) # Wrap the value into a proper Response obj @@ -14963,6 +14969,7 @@ def test_get_service_rest_call_success(request_type): assert isinstance(response, service.Service) assert response.name == "name_value" assert response.title == "title_value" + assert response.product_type == service.Service.ProductType.SOFTWARE_AS_A_SERVICE @pytest.mark.parametrize("null_interceptor", [True, False]) diff --git a/packages/google-cloud-compute-v1beta/docs/compute_v1beta/image_views.rst b/packages/google-cloud-compute-v1beta/docs/compute_v1beta/image_views.rst index 898825be39ba..5ff42b8ee3c7 100644 --- a/packages/google-cloud-compute-v1beta/docs/compute_v1beta/image_views.rst +++ b/packages/google-cloud-compute-v1beta/docs/compute_v1beta/image_views.rst @@ -4,3 +4,7 @@ ImageViews .. automodule:: google.cloud.compute_v1beta.services.image_views :members: :inherited-members: + +.. automodule:: google.cloud.compute_v1beta.services.image_views.pagers + :members: + :inherited-members: diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute/__init__.py b/packages/google-cloud-compute-v1beta/google/cloud/compute/__init__.py index 1ef1f8093c4f..809b3a3eb45e 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute/__init__.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute/__init__.py @@ -1178,6 +1178,7 @@ ImageOptimizationPolicy, ImageParams, ImageView, + ImageViewsListResponse, InitialStateConfig, InsertAddressRequest, InsertAutoscalerRequest, @@ -1292,6 +1293,7 @@ InstanceGroupManagerAllInstancesConfig, InstanceGroupManagerAutoHealingPolicy, InstanceGroupManagerInstanceFlexibilityPolicy, + InstanceGroupManagerInstanceFlexibilityPolicyConstraints, InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection, InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix, InstanceGroupManagerInstanceLifecyclePolicy, @@ -1512,6 +1514,7 @@ ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -3601,6 +3604,7 @@ "ImageOptimizationPolicy", "ImageParams", "ImageView", + "ImageViewsListResponse", "InitialStateConfig", "InsertAddressRequest", "InsertAutoscalerRequest", @@ -3715,6 +3719,7 @@ "InstanceGroupManagerAllInstancesConfig", "InstanceGroupManagerAutoHealingPolicy", "InstanceGroupManagerInstanceFlexibilityPolicy", + "InstanceGroupManagerInstanceFlexibilityPolicyConstraints", "InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection", "InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix", "InstanceGroupManagerInstanceLifecyclePolicy", @@ -3935,6 +3940,7 @@ "ListHealthChecksRequest", "ListHostsRequest", "ListImagesRequest", + "ListImageViewsRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", "ListInstanceGroupsRequest", 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 b1c2c0af04dd..fc511530f574 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 @@ -1139,6 +1139,7 @@ ImageOptimizationPolicy, ImageParams, ImageView, + ImageViewsListResponse, InitialStateConfig, InsertAddressRequest, InsertAutoscalerRequest, @@ -1253,6 +1254,7 @@ InstanceGroupManagerAllInstancesConfig, InstanceGroupManagerAutoHealingPolicy, InstanceGroupManagerInstanceFlexibilityPolicy, + InstanceGroupManagerInstanceFlexibilityPolicyConstraints, InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection, InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix, InstanceGroupManagerInstanceLifecyclePolicy, @@ -1473,6 +1475,7 @@ ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -3449,6 +3452,7 @@ "ImageParams", "ImageView", "ImageViewsClient", + "ImageViewsListResponse", "ImagesClient", "InitialStateConfig", "InsertAddressRequest", @@ -3564,6 +3568,7 @@ "InstanceGroupManagerAllInstancesConfig", "InstanceGroupManagerAutoHealingPolicy", "InstanceGroupManagerInstanceFlexibilityPolicy", + "InstanceGroupManagerInstanceFlexibilityPolicyConstraints", "InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection", "InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix", "InstanceGroupManagerInstanceLifecyclePolicy", @@ -3799,6 +3804,7 @@ "ListGlobalVmExtensionPoliciesRequest", "ListHealthChecksRequest", "ListHostsRequest", + "ListImageViewsRequest", "ListImagesRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", 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 c2bf14b10ee3..49fa6d7fb483 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 @@ -1237,6 +1237,11 @@ "methods": [ "get" ] + }, + "List": { + "methods": [ + "list" + ] } } } diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/global_frontend_settings_service/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/global_frontend_settings_service/client.py index cd9ebfc9c1b5..eff1f9950a72 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/global_frontend_settings_service/client.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/global_frontend_settings_service/client.py @@ -623,6 +623,8 @@ def sample_get(): GlobalFrontendSettingsService.Get. See the method description for details. project (str): + Required. Project ID for this + request. This corresponds to the ``project`` field on the ``request`` instance; if ``request`` is provided, this @@ -736,6 +738,8 @@ def sample_patch(): GlobalFrontendSettingsService.Patch. See the method description for details. project (str): + Required. Project ID for this + request. This corresponds to the ``project`` field on the ``request`` instance; if ``request`` is provided, this diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/client.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/client.py index b3e664ed1a34..a4ece6629b8c 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/client.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/client.py @@ -68,6 +68,7 @@ _LOGGER = std_logging.getLogger(__name__) +from google.cloud.compute_v1beta.services.image_views import pagers from google.cloud.compute_v1beta.types import compute from .transports.base import DEFAULT_CLIENT_INFO, ImageViewsTransport @@ -701,6 +702,147 @@ def sample_get(): # Done; return the response. return response + def list( + self, + request: Optional[Union[compute.ListImageViewsRequest, 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"""Returns a list of global ImageView resources, with a + regional context. + + .. 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.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1beta.ListImageViewsRequest( + 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.ListImageViewsRequest, dict]): + The request object. A request message for + ImageViews.List. See the method + description for details. + project (str): + Required. 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): + Required. 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.image_views.pagers.ListPager: + Response message for + ImageViewsService.List + 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.ListImageViewsRequest): + request = compute.ListImageViewsRequest(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 __enter__(self) -> "ImageViewsClient": return self diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/pagers.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/pagers.py new file mode 100644 index 000000000000..1e812640a3ef --- /dev/null +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/pagers.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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.ImageViewsListResponse` 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.ImageViewsListResponse` + 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.ImageViewsListResponse], + request: compute.ListImageViewsRequest, + response: compute.ImageViewsListResponse, + *, + 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.ListImageViewsRequest): + The initial request object. + response (google.cloud.compute_v1beta.types.ImageViewsListResponse): + 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.ListImageViewsRequest(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.ImageViewsListResponse]: + 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.ImageView]: + 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/image_views/transports/base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/base.py index c0486375053e..97d67a7186fd 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/base.py @@ -159,6 +159,21 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), } def close(self): @@ -179,6 +194,17 @@ def get( ]: raise NotImplementedError() + @property + def list( + self, + ) -> Callable[ + [compute.ListImageViewsRequest], + Union[ + compute.ImageViewsListResponse, Awaitable[compute.ImageViewsListResponse] + ], + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest.py index 5befea996547..eba5a305b4ad 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest.py @@ -80,6 +80,14 @@ def post_get(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 + transport = ImageViewsRestTransport(interceptor=MyCustomImageViewsInterceptor()) client = ImageViewsClient(transport=transport) @@ -130,6 +138,52 @@ def post_get_with_metadata( """ return response, metadata + def pre_list( + self, + request: compute.ListImageViewsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ListImageViewsRequest, 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 ImageViews server. + """ + return request, metadata + + def post_list( + self, response: compute.ImageViewsListResponse + ) -> compute.ImageViewsListResponse: + """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 ImageViews 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.ImageViewsListResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ImageViewsListResponse, 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 ImageViews 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 + @dataclasses.dataclass class ImageViewsRestStub: @@ -370,12 +424,163 @@ def __call__( ) return resp + class _List(_BaseImageViewsRestTransport._BaseList, ImageViewsRestStub): + def __hash__(self): + return hash("ImageViewsRestTransport.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.ListImageViewsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ImageViewsListResponse: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListImageViewsRequest): + The request object. A request message for + ImageViews.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.ImageViewsListResponse: + Response message for + ImageViewsService.List + + """ + + http_options = _BaseImageViewsRestTransport._BaseList._get_http_options() + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseImageViewsRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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.ImageViewsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1beta.ImageViews", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ImageViewsRestTransport._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.ImageViewsListResponse() + pb_resp = compute.ImageViewsListResponse.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.ImageViewsListResponse.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.ImageViewsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1beta.ImageViews", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + @property def get(self) -> Callable[[compute.GetImageViewRequest], compute.ImageView]: # 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 list( + self, + ) -> Callable[[compute.ListImageViewsRequest], compute.ImageViewsListResponse]: + # 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 kind(self) -> str: return "rest" diff --git a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest_base.py b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest_base.py index 361e52c1128f..14af635efa23 100644 --- a/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest_base.py +++ b/packages/google-cloud-compute-v1beta/google/cloud/compute_v1beta/services/image_views/transports/rest_base.py @@ -103,5 +103,21 @@ def _get_http_options(): ] return http_options + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/beta/projects/{project}/regions/{region}/imageViews", + }, + ] + return http_options + __all__ = ("_BaseImageViewsRestTransport",) 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 8b0571d4ed41..786c201c9137 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 @@ -824,6 +824,7 @@ ImageOptimizationPolicy, ImageParams, ImageView, + ImageViewsListResponse, InitialStateConfig, InsertAddressRequest, InsertAutoscalerRequest, @@ -938,6 +939,7 @@ InstanceGroupManagerAllInstancesConfig, InstanceGroupManagerAutoHealingPolicy, InstanceGroupManagerInstanceFlexibilityPolicy, + InstanceGroupManagerInstanceFlexibilityPolicyConstraints, InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection, InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix, InstanceGroupManagerInstanceLifecyclePolicy, @@ -1158,6 +1160,7 @@ ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -3106,6 +3109,7 @@ "ImageOptimizationPolicy", "ImageParams", "ImageView", + "ImageViewsListResponse", "InitialStateConfig", "InsertAddressRequest", "InsertAutoscalerRequest", @@ -3220,6 +3224,7 @@ "InstanceGroupManagerAllInstancesConfig", "InstanceGroupManagerAutoHealingPolicy", "InstanceGroupManagerInstanceFlexibilityPolicy", + "InstanceGroupManagerInstanceFlexibilityPolicyConstraints", "InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection", "InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix", "InstanceGroupManagerInstanceLifecyclePolicy", @@ -3440,6 +3445,7 @@ "ListHealthChecksRequest", "ListHostsRequest", "ListImagesRequest", + "ListImageViewsRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", "ListInstanceGroupsRequest", 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 946637b5bd71..fb3c4f6163c1 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 @@ -834,6 +834,7 @@ "ImageOptimizationPolicy", "ImageParams", "ImageView", + "ImageViewsListResponse", "InitialStateConfig", "InsertAddressRequest", "InsertAutoscalerRequest", @@ -948,6 +949,7 @@ "InstanceGroupManagerAllInstancesConfig", "InstanceGroupManagerAutoHealingPolicy", "InstanceGroupManagerInstanceFlexibilityPolicy", + "InstanceGroupManagerInstanceFlexibilityPolicyConstraints", "InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection", "InstanceGroupManagerInstanceFlexibilityPolicyProvisioningModelMix", "InstanceGroupManagerInstanceLifecyclePolicy", @@ -1167,6 +1169,7 @@ "ListGlobalVmExtensionPoliciesRequest", "ListHealthChecksRequest", "ListHostsRequest", + "ListImageViewsRequest", "ListImagesRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", @@ -26076,6 +26079,17 @@ class CacheInvalidationRule(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + backend_service (str): + If set, this invalidation rule will only apply to requests + routed to the given backend service or backend bucket. For + example, for a backend bucket ``bb1`` in the same scope as + the URL map, the path would be + ``projects/my-project/global/backendBuckets/bb1``; and for a + backend service ``bs1`` in the same scope as the URL map, + the path would be + ``projects/my-project/global/backendServices/bs1``. + + This field is a member of `oneof`_ ``_backend_service``. cache_tags (MutableSequence[str]): A list of cache tags used to identify cached objects. @@ -26090,26 +26104,55 @@ class CacheInvalidationRule(proto.Message): Up to 10 tags can be specified in a single invalidation request. + content_type (str): + If set, this invalidation rule will only + apply to responses with the given content-type. + Parameters are not allowed and are ignored from + the response when matching. Wildcards are not + allowed. + + This field is a member of `oneof`_ ``_content_type``. host (str): If set, this invalidation rule will only apply to requests with a Host header matching host. This field is a member of `oneof`_ ``_host``. + http_status (int): + If set, this invalidation rule will only + apply to responses with the given HTTP status. + Valid range is 200-599. + + This field is a member of `oneof`_ ``_http_status``. path (str): This field is a member of `oneof`_ ``_path``. """ + backend_service: str = proto.Field( + proto.STRING, + number=306946058, + optional=True, + ) cache_tags: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=29073078, ) + content_type: str = proto.Field( + proto.STRING, + number=294975296, + optional=True, + ) host: str = proto.Field( proto.STRING, number=3208616, optional=True, ) + http_status: int = proto.Field( + proto.INT32, + number=468949897, + optional=True, + ) path: str = proto.Field( proto.STRING, number=3433509, @@ -36008,6 +36051,15 @@ class DeleteRouterRequest(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + etag (str): + ETag for optimistic concurrency control as + described by AIP 154. Used to prevent + conflicting updates. If provided, the request + will succeed only if the etag matches the + current etag of the router; otherwise, the + request fails with an ABORTED error. + + This field is a member of `oneof`_ ``_etag``. project (str): Project ID for this request. region (str): @@ -36038,6 +36090,11 @@ class DeleteRouterRequest(proto.Message): Name of the Router resource to delete. """ + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) project: str = proto.Field( proto.STRING, number=227560217, @@ -40556,6 +40613,15 @@ class DistributionPolicyZoneConfiguration(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + max_size (google.cloud.compute_v1beta.types.FixedOrPercent): + Optional. The maximum size of the group in + this zone. This value can be either a fixed + number or, a percentage. If you set a + percentage, the number of instances is rounded + up if necessary. If unset, it is interpreted as + unbounded. + + This field is a member of `oneof`_ ``_max_size``. zone (str): The URL of thezone. The zone must exist in the region where the @@ -40564,6 +40630,12 @@ class DistributionPolicyZoneConfiguration(proto.Message): This field is a member of `oneof`_ ``_zone``. """ + max_size: "FixedOrPercent" = proto.Field( + proto.MESSAGE, + number=408072700, + optional=True, + message="FixedOrPercent", + ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -44948,6 +45020,13 @@ class FutureReservation(proto.Message): should be set to false. This field is a member of `oneof`_ ``_auto_delete_auto_created_reservations``. + colocation_resource (str): + Full or partial URL of an existing future + reservation to indicate intent for reserving + capacity in the same cluster as the colocation + resource. + + This field is a member of `oneof`_ ``_colocation_resource``. commitment_info (google.cloud.compute_v1beta.types.FutureReservationCommitmentInfo): If not present, then FR will not deliver a new commitment or update an existing commitment. @@ -45275,6 +45354,11 @@ class SchedulingType(proto.Enum): number=491352490, optional=True, ) + colocation_resource: str = proto.Field( + proto.STRING, + number=32901740, + optional=True, + ) commitment_info: "FutureReservationCommitmentInfo" = proto.Field( proto.MESSAGE, number=164362136, @@ -48001,7 +48085,7 @@ class GetGlobalFrontendSettingRequest(proto.Message): Attributes: project (str): - + Required. Project ID for this request. """ project: str = proto.Field( @@ -54566,7 +54650,7 @@ class GlobalFrontendSettings(proto.Message): This field is a member of `oneof`_ ``_description``. etag (str): - Output only. For optimistic locking + Output only. For optimistic locking. This field is a member of `oneof`_ ``_etag``. id (int): @@ -54598,11 +54682,11 @@ class BundleType(proto.Enum): A value indicating that the enum field is not set. BUNDLE_TYPE_UNSPECIFIED (466587567): - Bundling is not active + Bundling is not active. GLOBAL_FRONT_END (182122473): - Standard Global Frontend bundle + Standard Global Frontend bundle. INDIVIDUAL (438800025): - Ala Carte mode + Ala Carte mode. """ UNDEFINED_BUNDLE_TYPE = 0 @@ -54654,6 +54738,8 @@ class GlobalFrontendSettingsPatchResponse(proto.Message): Attributes: operation (google.cloud.compute_v1beta.types.Operation): + The Operation resource for this long-running + operation. This field is a member of `oneof`_ ``_operation``. """ @@ -61177,6 +61263,7 @@ class ImageView(proto.Message): Attributes: image (google.cloud.compute_v1beta.types.Image): + The Image resource. This field is a member of `oneof`_ ``_image``. """ @@ -61189,6 +61276,88 @@ class ImageView(proto.Message): ) +class ImageViewsListResponse(proto.Message): + r"""Response message for ImageViewsService.List + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + etag (str): + Etag of the resource. + + 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.ImageView]): + A list of Image resources. + kind (str): + + This field is a member of `oneof`_ ``_kind``. + next_page_token (str): + + 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. + 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["ImageView"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="ImageView", + ) + 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 InitialStateConfig(proto.Message): r"""Initial State for shielded instance, these are public keys which are safe to store in public @@ -69114,6 +69283,11 @@ class InstanceGroupManagerInstanceFlexibilityPolicy(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + constraints (google.cloud.compute_v1beta.types.InstanceGroupManagerInstanceFlexibilityPolicyConstraints): + Constraints applied to instance flexibility + spreading and selection. + + This field is a member of `oneof`_ ``_constraints``. instance_selections (MutableMapping[str, google.cloud.compute_v1beta.types.InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection]): Named instance selections configuring properties that the group will use when creating @@ -69125,6 +69299,14 @@ class InstanceGroupManagerInstanceFlexibilityPolicy(proto.Message): This field is a member of `oneof`_ ``_provisioning_model_mix``. """ + constraints: "InstanceGroupManagerInstanceFlexibilityPolicyConstraints" = ( + proto.Field( + proto.MESSAGE, + number=3909174, + optional=True, + message="InstanceGroupManagerInstanceFlexibilityPolicyConstraints", + ) + ) instance_selections: MutableMapping[ str, "InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection" ] = proto.MapField( @@ -69141,6 +69323,30 @@ class InstanceGroupManagerInstanceFlexibilityPolicy(proto.Message): ) +class InstanceGroupManagerInstanceFlexibilityPolicyConstraints(proto.Message): + r"""Constraints applied to instance flexibility spreading and + selection. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + single_machine_type (bool): + When set to true, all instances in the group + will be provisioned with the exact same machine + type, ensuring cluster homogeneity across zones. + Defaults to false. + + This field is a member of `oneof`_ ``_single_machine_type``. + """ + + single_machine_type: bool = proto.Field( + proto.BOOL, + number=55620297, + optional=True, + ) + + class InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection(proto.Message): r""" @@ -87530,6 +87736,170 @@ class ListHostsRequest(proto.Message): ) +class ListImageViewsRequest(proto.Message): + r"""A request message for ImageViews.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): + Required. Project ID for this request. + region (str): + Required. 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``. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, + optional=True, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, + optional=True, + ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, + optional=True, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + return_partial_success: bool = proto.Field( + proto.BOOL, + number=517198390, + optional=True, + ) + + class ListImagesRequest(proto.Message): r"""A request message for Images.List. See the method description for details. @@ -110227,7 +110597,7 @@ class ManagedRulesetList(proto.Message): This field is a member of `oneof`_ ``_id``. items (MutableSequence[google.cloud.compute_v1beta.types.ManagedRuleset]): - + The list of managed rulesets. next_page_token (str): This field is a member of `oneof`_ ``_next_page_token``. @@ -122225,12 +122595,13 @@ class PatchGlobalFrontendSettingRequest(proto.Message): global_frontend_settings_resource (google.cloud.compute_v1beta.types.GlobalFrontendSettings): The body resource for this request project (str): - + Required. Project ID for this request. request_id (str): + An optional request ID to identify requests. This field is a member of `oneof`_ ``_request_id``. update_mask (str): - e.g., "type". + Field mask to support patch. E.g., "type". This field is a member of `oneof`_ ``_update_mask``. """ @@ -138140,6 +138511,15 @@ class Behavior(proto.Enum): No description available. GPU_ERROR (198817909): The subBlock experienced a GPU error. + NVSWITCH_FAULT_CONTROLLER_ERROR (250941637): + The subBlock experienced an NVSwitch + controller error. + NVSWITCH_FAULT_DEGRADED_BANDWIDTH (202741248): + The subBlock experienced NVSwitch degraded + bandwidth. + NVSWITCH_FAULT_SWITCH_ERROR (287636061): + The subBlock experienced an NVSwitch switch + error. PERFORMANCE (135701520): The subBlock experienced performance issues. SILENT_DATA_CORRUPTION (111360678): @@ -138152,6 +138532,9 @@ class Behavior(proto.Enum): UNDEFINED_BEHAVIOR = 0 FAULT_BEHAVIOR_UNSPECIFIED = 447660743 GPU_ERROR = 198817909 + NVSWITCH_FAULT_CONTROLLER_ERROR = 250941637 + NVSWITCH_FAULT_DEGRADED_BANDWIDTH = 202741248 + NVSWITCH_FAULT_SWITCH_ERROR = 287636061 PERFORMANCE = 135701520 SILENT_DATA_CORRUPTION = 111360678 SWITCH_FAILURE = 254909279 @@ -143122,6 +143505,15 @@ class Router(proto.Message): (interconnectAttachments). This field is a member of `oneof`_ ``_encrypted_interconnect_router``. + etag (str): + ETag for optimistic concurrency control as + described by AIP 154. Used to prevent + conflicting updates. If provided, the request + will succeed only if the etag matches the + current etag of the router; otherwise, the + request fails with an ABORTED error. + + This field is a member of `oneof`_ ``_etag``. id (int): [Output Only] The unique identifier for the resource. This identifier is defined by the server. @@ -143213,6 +143605,11 @@ class Router(proto.Message): number=297996575, optional=True, ) + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) id: int = proto.Field( proto.UINT64, number=3355, @@ -144982,6 +145379,8 @@ class RouterNatRule(proto.Message): rules within a NAT. This field is a member of `oneof`_ ``_rule_number``. + source_workload_identities (MutableSequence[str]): + A list of source workload identities. """ action: "RouterNatRuleAction" = proto.Field( @@ -145005,6 +145404,10 @@ class RouterNatRule(proto.Message): number=535211500, optional=True, ) + source_workload_identities: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=297835904, + ) class RouterNatRuleAction(proto.Message): diff --git a/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_image_views_list_sync.py b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_image_views_list_sync.py new file mode 100644 index 000000000000..13fff7213a45 --- /dev/null +++ b/packages/google-cloud-compute-v1beta/samples/generated_samples/compute_v1beta_generated_image_views_list_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_ImageViews_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.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1beta.ListImageViewsRequest( + 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) + + +# [END compute_v1beta_generated_ImageViews_List_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 0fc82c72cae9..4dd0fcb203d1 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 @@ -16859,6 +16859,90 @@ ], "title": "compute_v1beta_generated_image_views_get_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1beta.ImageViewsClient", + "shortName": "ImageViewsClient" + }, + "fullName": "google.cloud.compute_v1beta.ImageViewsClient.list", + "method": { + "fullName": "google.cloud.compute.v1beta.ImageViews.List", + "service": { + "fullName": "google.cloud.compute.v1beta.ImageViews", + "shortName": "ImageViews" + }, + "shortName": "List" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1beta.types.ListImageViewsRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "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.image_views.pagers.ListPager", + "shortName": "list" + }, + "description": "Sample for List", + "file": "compute_v1beta_generated_image_views_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1beta_generated_ImageViews_List_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, + "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": 54, + "start": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1beta_generated_image_views_list_sync.py" + }, { "canonical": true, "clientMethod": { diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_future_reservations.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_future_reservations.py index efe6791a15e9..95e39b39951e 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_future_reservations.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_future_reservations.py @@ -3825,6 +3825,7 @@ def test_get_rest_call_success(request_type): return_value = compute.FutureReservation( auto_created_reservations_delete_time="auto_created_reservations_delete_time_value", auto_delete_auto_created_reservations=True, + colocation_resource="colocation_resource_value", confidential_compute_type="confidential_compute_type_value", creation_timestamp="creation_timestamp_value", deployment_type="deployment_type_value", @@ -3865,6 +3866,7 @@ def test_get_rest_call_success(request_type): == "auto_created_reservations_delete_time_value" ) assert response.auto_delete_auto_created_reservations is True + assert response.colocation_resource == "colocation_resource_value" assert response.confidential_compute_type == "confidential_compute_type_value" assert response.creation_timestamp == "creation_timestamp_value" assert response.deployment_type == "deployment_type_value" @@ -4011,6 +4013,7 @@ def test_insert_rest_call_success(request_type): "auto_created_reservations_delete_time": "auto_created_reservations_delete_time_value", "auto_created_reservations_duration": {"nanos": 543, "seconds": 751}, "auto_delete_auto_created_reservations": True, + "colocation_resource": "colocation_resource_value", "commitment_info": { "commitment_name": "commitment_name_value", "commitment_plan": "commitment_plan_value", @@ -4527,6 +4530,7 @@ def test_update_rest_call_success(request_type): "auto_created_reservations_delete_time": "auto_created_reservations_delete_time_value", "auto_created_reservations_duration": {"nanos": 543, "seconds": 751}, "auto_delete_auto_created_reservations": True, + "colocation_resource": "colocation_resource_value", "commitment_info": { "commitment_name": "commitment_name_value", "commitment_plan": "commitment_plan_value", diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_image_views.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_image_views.py index 596739ed3e81..d6e0f0c78fe8 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_image_views.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_image_views.py @@ -54,6 +54,7 @@ from google.cloud.compute_v1beta.services.image_views import ( ImageViewsClient, + pagers, transports, ) from google.cloud.compute_v1beta.types import compute @@ -1076,6 +1077,254 @@ def test_get_rest_flattened_error(transport: str = "rest"): ) +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 = ImageViewsClient( + 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.ListImageViewsRequest): + transport_class = transports.ImageViewsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + "returnPartialSuccess", + ) + ) + + # 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" + + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ImageViewsListResponse() + # 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.ImageViewsListResponse.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = ImageViewsClient( + 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.ImageViewsListResponse() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "region": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_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.ImageViewsListResponse.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}/regions/{region}/imageViews" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = ImageViewsClient( + 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.ListImageViewsRequest(), + project="project_value", + region="region_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = ImageViewsClient( + 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.ImageViewsListResponse( + items=[ + compute.ImageView(), + compute.ImageView(), + compute.ImageView(), + ], + next_page_token="abc", + ), + compute.ImageViewsListResponse( + items=[], + next_page_token="def", + ), + compute.ImageViewsListResponse( + items=[ + compute.ImageView(), + ], + next_page_token="ghi", + ), + compute.ImageViewsListResponse( + items=[ + compute.ImageView(), + compute.ImageView(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.ImageViewsListResponse.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.ImageView) 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_credentials_transport_error(): # It is an error to provide credentials and a transport instance. transport = transports.ImageViewsRestTransport( @@ -1277,6 +1526,140 @@ def test_get_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() +def test_list_rest_bad_request(request_type=compute.ListImageViewsRequest): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListImageViewsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.ImageViewsListResponse( + 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.ImageViewsListResponse.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.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ImageViewsRestInterceptor(), + ) + client = ImageViewsClient(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.ImageViewsRestInterceptor, "post_list") as post, + mock.patch.object( + transports.ImageViewsRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ImageViewsRestInterceptor, "pre_list") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListImageViewsRequest.pb(compute.ListImageViewsRequest()) + 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.ImageViewsListResponse.to_json( + compute.ImageViewsListResponse() + ) + req.return_value.content = return_value + + request = compute.ListImageViewsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ImageViewsListResponse() + post_with_metadata.return_value = compute.ImageViewsListResponse(), 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_initialize_client_w_rest(): client = ImageViewsClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -1303,6 +1686,25 @@ 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_list_empty_call_rest(): + client = ImageViewsClient( + 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.ListImageViewsRequest() + assert args[0] == request_msg + + def test_image_views_base_transport_error(): # Passing both a credentials object and credentials_file should raise an error with pytest.raises(core_exceptions.DuplicateCredentialArgs): @@ -1324,7 +1726,10 @@ def test_image_views_base_transport(): # Every method on the transport should just blindly # raise NotImplementedError. - methods = ("get",) + methods = ( + "get", + "list", + ) for method in methods: with pytest.raises(NotImplementedError): getattr(transport, method)(request=object()) @@ -1472,6 +1877,9 @@ def test_image_views_client_transport_session_collision(transport_name): session1 = client1.transport.get._session session2 = client2.transport.get._session assert session1 != session2 + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 def test_common_billing_account_path(): 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 ad2cb3ca9298..907bcf33e64b 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 @@ -14235,12 +14235,18 @@ def test_insert_rest_call_success(request_type): "description": "description_value", "distribution_policy": { "target_shape": "target_shape_value", - "zones": [{"zone": "zone_value"}], + "zones": [ + { + "max_size": {"calculated": 1042, "fixed": 528, "percent": 753}, + "zone": "zone_value", + } + ], }, "failover_action": "failover_action_value", "fingerprint": "fingerprint_value", "id": 205, "instance_flexibility_policy": { + "constraints": {"single_machine_type": True}, "instance_selections": {}, "provisioning_model_mix": { "standard_capacity_base": 2296, @@ -14359,7 +14365,7 @@ def test_insert_rest_call_success(request_type): "update_policy": { "allowed_actions": ["allowed_actions_value1", "allowed_actions_value2"], "instance_redistribution_type": "instance_redistribution_type_value", - "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753}, + "max_surge": {}, "max_unavailable": {}, "min_ready_sec": 1362, "minimal_action": "minimal_action_value", @@ -15236,12 +15242,18 @@ def test_patch_rest_call_success(request_type): "description": "description_value", "distribution_policy": { "target_shape": "target_shape_value", - "zones": [{"zone": "zone_value"}], + "zones": [ + { + "max_size": {"calculated": 1042, "fixed": 528, "percent": 753}, + "zone": "zone_value", + } + ], }, "failover_action": "failover_action_value", "fingerprint": "fingerprint_value", "id": 205, "instance_flexibility_policy": { + "constraints": {"single_machine_type": True}, "instance_selections": {}, "provisioning_model_mix": { "standard_capacity_base": 2296, @@ -15360,7 +15372,7 @@ def test_patch_rest_call_success(request_type): "update_policy": { "allowed_actions": ["allowed_actions_value1", "allowed_actions_value2"], "instance_redistribution_type": "instance_redistribution_type_value", - "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753}, + "max_surge": {}, "max_unavailable": {}, "min_ready_sec": 1362, "minimal_action": "minimal_action_value", @@ -18735,12 +18747,18 @@ def test_update_rest_call_success(request_type): "description": "description_value", "distribution_policy": { "target_shape": "target_shape_value", - "zones": [{"zone": "zone_value"}], + "zones": [ + { + "max_size": {"calculated": 1042, "fixed": 528, "percent": 753}, + "zone": "zone_value", + } + ], }, "failover_action": "failover_action_value", "fingerprint": "fingerprint_value", "id": 205, "instance_flexibility_policy": { + "constraints": {"single_machine_type": True}, "instance_selections": {}, "provisioning_model_mix": { "standard_capacity_base": 2296, @@ -18859,7 +18877,7 @@ def test_update_rest_call_success(request_type): "update_policy": { "allowed_actions": ["allowed_actions_value1", "allowed_actions_value2"], "instance_redistribution_type": "instance_redistribution_type_value", - "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753}, + "max_surge": {}, "max_unavailable": {}, "min_ready_sec": 1362, "minimal_action": "minimal_action_value", diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instance_group_managers.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instance_group_managers.py index 2c0a318eb042..d9c3cfe3061a 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instance_group_managers.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_instance_group_managers.py @@ -13509,12 +13509,18 @@ def test_insert_rest_call_success(request_type): "description": "description_value", "distribution_policy": { "target_shape": "target_shape_value", - "zones": [{"zone": "zone_value"}], + "zones": [ + { + "max_size": {"calculated": 1042, "fixed": 528, "percent": 753}, + "zone": "zone_value", + } + ], }, "failover_action": "failover_action_value", "fingerprint": "fingerprint_value", "id": 205, "instance_flexibility_policy": { + "constraints": {"single_machine_type": True}, "instance_selections": {}, "provisioning_model_mix": { "standard_capacity_base": 2296, @@ -13633,7 +13639,7 @@ def test_insert_rest_call_success(request_type): "update_policy": { "allowed_actions": ["allowed_actions_value1", "allowed_actions_value2"], "instance_redistribution_type": "instance_redistribution_type_value", - "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753}, + "max_surge": {}, "max_unavailable": {}, "min_ready_sec": 1362, "minimal_action": "minimal_action_value", @@ -14523,12 +14529,18 @@ def test_patch_rest_call_success(request_type): "description": "description_value", "distribution_policy": { "target_shape": "target_shape_value", - "zones": [{"zone": "zone_value"}], + "zones": [ + { + "max_size": {"calculated": 1042, "fixed": 528, "percent": 753}, + "zone": "zone_value", + } + ], }, "failover_action": "failover_action_value", "fingerprint": "fingerprint_value", "id": 205, "instance_flexibility_policy": { + "constraints": {"single_machine_type": True}, "instance_selections": {}, "provisioning_model_mix": { "standard_capacity_base": 2296, @@ -14647,7 +14659,7 @@ def test_patch_rest_call_success(request_type): "update_policy": { "allowed_actions": ["allowed_actions_value1", "allowed_actions_value2"], "instance_redistribution_type": "instance_redistribution_type_value", - "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753}, + "max_surge": {}, "max_unavailable": {}, "min_ready_sec": 1362, "minimal_action": "minimal_action_value", @@ -18046,12 +18058,18 @@ def test_update_rest_call_success(request_type): "description": "description_value", "distribution_policy": { "target_shape": "target_shape_value", - "zones": [{"zone": "zone_value"}], + "zones": [ + { + "max_size": {"calculated": 1042, "fixed": 528, "percent": 753}, + "zone": "zone_value", + } + ], }, "failover_action": "failover_action_value", "fingerprint": "fingerprint_value", "id": 205, "instance_flexibility_policy": { + "constraints": {"single_machine_type": True}, "instance_selections": {}, "provisioning_model_mix": { "standard_capacity_base": 2296, @@ -18170,7 +18188,7 @@ def test_update_rest_call_success(request_type): "update_policy": { "allowed_actions": ["allowed_actions_value1", "allowed_actions_value2"], "instance_redistribution_type": "instance_redistribution_type_value", - "max_surge": {"calculated": 1042, "fixed": 528, "percent": 753}, + "max_surge": {}, "max_unavailable": {}, "min_ready_sec": 1362, "minimal_action": "minimal_action_value", diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_url_maps.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_url_maps.py index 9b737f1a0706..9e65b9e0187d 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_url_maps.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_region_url_maps.py @@ -1992,7 +1992,7 @@ def test_invalidate_cache_rest_flattened(): region="region_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) mock_args.update(sample_request) @@ -2035,7 +2035,7 @@ def test_invalidate_cache_rest_flattened_error(transport: str = "rest"): region="region_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) @@ -2193,7 +2193,7 @@ def test_invalidate_cache_unary_rest_flattened(): region="region_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) mock_args.update(sample_request) @@ -2236,7 +2236,7 @@ def test_invalidate_cache_unary_rest_flattened_error(transport: str = "rest"): region="region_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) @@ -4574,8 +4574,11 @@ def test_invalidate_cache_rest_call_success(request_type): # send a request that will satisfy transcoding request_init = {"project": "sample1", "region": "sample2", "url_map": "sample3"} request_init["cache_invalidation_rule_resource"] = { + "backend_service": "backend_service_value", "cache_tags": ["cache_tags_value1", "cache_tags_value2"], + "content_type": "content_type_value", "host": "host_value", + "http_status": 1219, "path": "path_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. 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 a4aab7854639..32b9106be4a1 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 @@ -1216,7 +1216,12 @@ def test_delete_rest_required_fields(request_type=compute.DeleteRouterRequest): jsonified_request["router"] = "router_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("requestId",)) + assert not set(unset_fields) - set( + ( + "etag", + "requestId", + ) + ) # verify required fields with non-default values are left alone assert "project" in jsonified_request @@ -1406,7 +1411,12 @@ def test_delete_unary_rest_required_fields(request_type=compute.DeleteRouterRequ jsonified_request["router"] = "router_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("requestId",)) + assert not set(unset_fields) - set( + ( + "etag", + "requestId", + ) + ) # verify required fields with non-default values are left alone assert "project" in jsonified_request @@ -8475,6 +8485,7 @@ def test_get_rest_call_success(request_type): creation_timestamp="creation_timestamp_value", description="description_value", encrypted_interconnect_router=True, + etag="etag_value", id=205, kind="kind_value", name="name_value", @@ -8501,6 +8512,7 @@ def test_get_rest_call_success(request_type): assert response.creation_timestamp == "creation_timestamp_value" assert response.description == "description_value" assert response.encrypted_interconnect_router is True + assert response.etag == "etag_value" assert response.id == 205 assert response.kind == "kind_value" assert response.name == "name_value" @@ -9306,6 +9318,7 @@ def test_insert_rest_call_success(request_type): "creation_timestamp": "creation_timestamp_value", "description": "description_value", "encrypted_interconnect_router": True, + "etag": "etag_value", "id": 205, "interfaces": [ { @@ -9362,6 +9375,10 @@ def test_insert_rest_call_success(request_type): "description": "description_value", "match": "match_value", "rule_number": 1184, + "source_workload_identities": [ + "source_workload_identities_value1", + "source_workload_identities_value2", + ], } ], "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value", @@ -10220,6 +10237,7 @@ def test_patch_rest_call_success(request_type): "creation_timestamp": "creation_timestamp_value", "description": "description_value", "encrypted_interconnect_router": True, + "etag": "etag_value", "id": 205, "interfaces": [ { @@ -10276,6 +10294,10 @@ def test_patch_rest_call_success(request_type): "description": "description_value", "match": "match_value", "rule_number": 1184, + "source_workload_identities": [ + "source_workload_identities_value1", + "source_workload_identities_value2", + ], } ], "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value", @@ -11100,6 +11122,7 @@ def test_preview_rest_call_success(request_type): "creation_timestamp": "creation_timestamp_value", "description": "description_value", "encrypted_interconnect_router": True, + "etag": "etag_value", "id": 205, "interfaces": [ { @@ -11156,6 +11179,10 @@ def test_preview_rest_call_success(request_type): "description": "description_value", "match": "match_value", "rule_number": 1184, + "source_workload_identities": [ + "source_workload_identities_value1", + "source_workload_identities_value2", + ], } ], "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value", @@ -11633,6 +11660,7 @@ def test_update_rest_call_success(request_type): "creation_timestamp": "creation_timestamp_value", "description": "description_value", "encrypted_interconnect_router": True, + "etag": "etag_value", "id": 205, "interfaces": [ { @@ -11689,6 +11717,10 @@ def test_update_rest_call_success(request_type): "description": "description_value", "match": "match_value", "rule_number": 1184, + "source_workload_identities": [ + "source_workload_identities_value1", + "source_workload_identities_value2", + ], } ], "source_subnetwork_ip_ranges_to_nat": "source_subnetwork_ip_ranges_to_nat_value", diff --git a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_url_maps.py b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_url_maps.py index 7d80eb4eef2f..f8b8d5739e41 100644 --- a/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_url_maps.py +++ b/packages/google-cloud-compute-v1beta/tests/unit/gapic/compute_v1beta/test_url_maps.py @@ -2185,7 +2185,7 @@ def test_invalidate_cache_rest_flattened(): project="project_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) mock_args.update(sample_request) @@ -2227,7 +2227,7 @@ def test_invalidate_cache_rest_flattened_error(transport: str = "rest"): project="project_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) @@ -2376,7 +2376,7 @@ def test_invalidate_cache_unary_rest_flattened(): project="project_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) mock_args.update(sample_request) @@ -2418,7 +2418,7 @@ def test_invalidate_cache_unary_rest_flattened_error(transport: str = "rest"): project="project_value", url_map="url_map_value", cache_invalidation_rule_resource=compute.CacheInvalidationRule( - cache_tags=["cache_tags_value"] + backend_service="backend_service_value" ), ) @@ -4808,8 +4808,11 @@ def test_invalidate_cache_rest_call_success(request_type): # send a request that will satisfy transcoding request_init = {"project": "sample1", "url_map": "sample2"} request_init["cache_invalidation_rule_resource"] = { + "backend_service": "backend_service_value", "cache_tags": ["cache_tags_value1", "cache_tags_value2"], + "content_type": "content_type_value", "host": "host_value", + "http_status": 1219, "path": "path_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. diff --git a/packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst b/packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst new file mode 100644 index 000000000000..0d20fa726f92 --- /dev/null +++ b/packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst @@ -0,0 +1,6 @@ +GlobalFrontendSettingsService +----------------------------------------------- + +.. automodule:: google.cloud.compute_v1.services.global_frontend_settings_service + :members: + :inherited-members: diff --git a/packages/google-cloud-compute/docs/compute_v1/image_views.rst b/packages/google-cloud-compute/docs/compute_v1/image_views.rst new file mode 100644 index 000000000000..9361d2869ed6 --- /dev/null +++ b/packages/google-cloud-compute/docs/compute_v1/image_views.rst @@ -0,0 +1,10 @@ +ImageViews +---------------------------- + +.. automodule:: google.cloud.compute_v1.services.image_views + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.image_views.pagers + :members: + :inherited-members: diff --git a/packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst b/packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst new file mode 100644 index 000000000000..6dbd04fced83 --- /dev/null +++ b/packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst @@ -0,0 +1,10 @@ +ManagedRulesets +--------------------------------- + +.. automodule:: google.cloud.compute_v1.services.managed_rulesets + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.managed_rulesets.pagers + :members: + :inherited-members: diff --git a/packages/google-cloud-compute/docs/compute_v1/services_.rst b/packages/google-cloud-compute/docs/compute_v1/services_.rst index 928851b02ee5..173d5c8fb945 100644 --- a/packages/google-cloud-compute/docs/compute_v1/services_.rst +++ b/packages/google-cloud-compute/docs/compute_v1/services_.rst @@ -19,6 +19,7 @@ Services for Google Cloud Compute v1 API future_reservations global_addresses global_forwarding_rules + global_frontend_settings_service global_network_endpoint_groups global_operations global_organization_operations @@ -28,6 +29,7 @@ Services for Google Cloud Compute v1 API hosts image_family_views images + image_views instance_group_manager_resize_requests instance_group_managers instance_groups @@ -46,6 +48,7 @@ Services for Google Cloud Compute v1 API licenses machine_images machine_types + managed_rulesets network_attachments network_edge_security_services network_endpoint_groups diff --git a/packages/google-cloud-compute/google/cloud/compute/__init__.py b/packages/google-cloud-compute/google/cloud/compute/__init__.py index c70c8c6e9788..18b48376c032 100644 --- a/packages/google-cloud-compute/google/cloud/compute/__init__.py +++ b/packages/google-cloud-compute/google/cloud/compute/__init__.py @@ -52,6 +52,9 @@ from google.cloud.compute_v1.services.global_forwarding_rules.client import ( GlobalForwardingRulesClient, ) +from google.cloud.compute_v1.services.global_frontend_settings_service.client import ( + GlobalFrontendSettingsServiceClient, +) from google.cloud.compute_v1.services.global_network_endpoint_groups.client import ( GlobalNetworkEndpointGroupsClient, ) @@ -72,6 +75,7 @@ from google.cloud.compute_v1.services.image_family_views.client import ( ImageFamilyViewsClient, ) +from google.cloud.compute_v1.services.image_views.client import ImageViewsClient from google.cloud.compute_v1.services.images.client import ImagesClient from google.cloud.compute_v1.services.instance_group_manager_resize_requests.client import ( InstanceGroupManagerResizeRequestsClient, @@ -113,6 +117,9 @@ from google.cloud.compute_v1.services.licenses.client import LicensesClient from google.cloud.compute_v1.services.machine_images.client import MachineImagesClient from google.cloud.compute_v1.services.machine_types.client import MachineTypesClient +from google.cloud.compute_v1.services.managed_rulesets.client import ( + ManagedRulesetsClient, +) from google.cloud.compute_v1.services.network_attachments.client import ( NetworkAttachmentsClient, ) @@ -534,6 +541,7 @@ CapacityHistoryAdviceRequest, CapacityHistoryRequest, CapacityHistoryRequestInstanceProperties, + CapacityHistoryRequestInstancePropertiesAttachedDisk, CapacityHistoryRequestInstancePropertiesScheduling, CapacityHistoryRequestLocationPolicy, CapacityHistoryResponse, @@ -808,6 +816,7 @@ GetFutureReservationRequest, GetGlobalAddressRequest, GetGlobalForwardingRuleRequest, + GetGlobalFrontendSettingRequest, GetGlobalNetworkEndpointGroupRequest, GetGlobalOperationRequest, GetGlobalOrganizationOperationRequest, @@ -859,6 +868,7 @@ GetIamPolicySubnetworkRequest, GetImageFamilyViewRequest, GetImageRequest, + GetImageViewRequest, GetInstanceGroupManagerRequest, GetInstanceGroupManagerResizeRequestRequest, GetInstanceGroupRequest, @@ -878,6 +888,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetManagedRulesetRequest, GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, @@ -985,6 +996,8 @@ GetZoneRequest, GetZoneVmExtensionPolicyRequest, GlobalAddressesMoveRequest, + GlobalFrontendSettings, + GlobalFrontendSettingsPatchResponse, GlobalNetworkEndpointGroupsAttachEndpointsRequest, GlobalNetworkEndpointGroupsDetachEndpointsRequest, GlobalOrganizationSetPolicyRequest, @@ -1058,6 +1071,8 @@ ImageFamilyView, ImageList, ImageParams, + ImageView, + ImageViewsListResponse, InitialStateConfig, InsertAddressRequest, InsertAutoscalerRequest, @@ -1333,6 +1348,7 @@ InterconnectRemoteLocationPermittedConnections, InterconnectsGetDiagnosticsResponse, InterconnectsGetMacsecConfigResponse, + InterconnectsSetNameRequest, Interval, InvalidateCacheUrlMapRequest, Items, @@ -1374,6 +1390,7 @@ ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -1395,6 +1412,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListManagedRulesetsRequest, ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, @@ -1511,6 +1529,8 @@ ManagedInstanceScheduling, ManagedInstanceShutdownDetails, ManagedInstanceVersion, + ManagedRuleset, + ManagedRulesetList, Metadata, MetadataFilter, MetadataFilterLabelMatch, @@ -1616,6 +1636,7 @@ PacketMirroringMirroredResourceInfoSubnetInfo, PacketMirroringNetworkInfo, PacketMirroringsScopedList, + PatchAssociationRegionNetworkFirewallPolicyRequest, PatchAutoscalerRequest, PatchBackendBucketRequest, PatchBackendServiceRequest, @@ -1624,6 +1645,7 @@ PatchFirewallRequest, PatchForwardingRuleRequest, PatchGlobalForwardingRuleRequest, + PatchGlobalFrontendSettingRequest, PatchGlobalPublicDelegatedPrefixeRequest, PatchHealthCheckRequest, PatchImageRequest, @@ -2048,6 +2070,7 @@ SetNamedPortsInstanceGroupRequest, SetNamedPortsRegionInstanceGroupRequest, SetNameInstanceRequest, + SetNameInterconnectRequest, SetNodeTemplateNodeGroupRequest, SetPrivateIpGoogleAccessSubnetworkRequest, SetProxyHeaderTargetSslProxyRequest, @@ -2401,6 +2424,7 @@ "FutureReservationsClient", "GlobalAddressesClient", "GlobalForwardingRulesClient", + "GlobalFrontendSettingsServiceClient", "GlobalNetworkEndpointGroupsClient", "GlobalOperationsClient", "GlobalOrganizationOperationsClient", @@ -2410,6 +2434,7 @@ "HostsClient", "ImageFamilyViewsClient", "ImagesClient", + "ImageViewsClient", "InstanceGroupManagerResizeRequestsClient", "InstanceGroupManagersClient", "InstanceGroupsClient", @@ -2428,6 +2453,7 @@ "LicensesClient", "MachineImagesClient", "MachineTypesClient", + "ManagedRulesetsClient", "NetworkAttachmentsClient", "NetworkEdgeSecurityServicesClient", "NetworkEndpointGroupsClient", @@ -2734,6 +2760,7 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", @@ -3008,6 +3035,7 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", @@ -3059,6 +3087,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -3078,6 +3107,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -3185,6 +3215,8 @@ "GetZoneRequest", "GetZoneVmExtensionPolicyRequest", "GlobalAddressesMoveRequest", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", "GlobalOrganizationSetPolicyRequest", @@ -3258,6 +3290,8 @@ "ImageFamilyView", "ImageList", "ImageParams", + "ImageView", + "ImageViewsListResponse", "InitialStateConfig", "InsertAddressRequest", "InsertAutoscalerRequest", @@ -3533,6 +3567,7 @@ "InterconnectRemoteLocationPermittedConnections", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -3574,6 +3609,7 @@ "ListHealthChecksRequest", "ListHostsRequest", "ListImagesRequest", + "ListImageViewsRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", "ListInstanceGroupsRequest", @@ -3595,6 +3631,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -3711,6 +3748,8 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -3816,6 +3855,7 @@ "PacketMirroringMirroredResourceInfoSubnetInfo", "PacketMirroringNetworkInfo", "PacketMirroringsScopedList", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -3824,6 +3864,7 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", "PatchHealthCheckRequest", "PatchImageRequest", @@ -4248,6 +4289,7 @@ "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNodeTemplateNodeGroupRequest", "SetPrivateIpGoogleAccessSubnetworkRequest", "SetProxyHeaderTargetSslProxyRequest", diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/__init__.py index 56ed0733a80a..27aa9e979db7 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/__init__.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/__init__.py @@ -42,6 +42,7 @@ "google.cloud.compute_v1.services.future_reservations", "google.cloud.compute_v1.services.global_addresses", "google.cloud.compute_v1.services.global_forwarding_rules", + "google.cloud.compute_v1.services.global_frontend_settings_service", "google.cloud.compute_v1.services.global_network_endpoint_groups", "google.cloud.compute_v1.services.global_operations", "google.cloud.compute_v1.services.global_organization_operations", @@ -50,6 +51,7 @@ "google.cloud.compute_v1.services.health_checks", "google.cloud.compute_v1.services.hosts", "google.cloud.compute_v1.services.image_family_views", + "google.cloud.compute_v1.services.image_views", "google.cloud.compute_v1.services.images", "google.cloud.compute_v1.services.instance_group_manager_resize_requests", "google.cloud.compute_v1.services.instance_group_managers", @@ -69,6 +71,7 @@ "google.cloud.compute_v1.services.licenses", "google.cloud.compute_v1.services.machine_images", "google.cloud.compute_v1.services.machine_types", + "google.cloud.compute_v1.services.managed_rulesets", "google.cloud.compute_v1.services.network_attachments", "google.cloud.compute_v1.services.network_edge_security_services", "google.cloud.compute_v1.services.network_endpoint_groups", @@ -172,6 +175,9 @@ from .services.future_reservations import FutureReservationsClient from .services.global_addresses import GlobalAddressesClient from .services.global_forwarding_rules import GlobalForwardingRulesClient +from .services.global_frontend_settings_service import ( + GlobalFrontendSettingsServiceClient, +) from .services.global_network_endpoint_groups import GlobalNetworkEndpointGroupsClient from .services.global_operations import GlobalOperationsClient from .services.global_organization_operations import GlobalOrganizationOperationsClient @@ -182,6 +188,7 @@ from .services.health_checks import HealthChecksClient from .services.hosts import HostsClient from .services.image_family_views import ImageFamilyViewsClient +from .services.image_views import ImageViewsClient from .services.images import ImagesClient from .services.instance_group_manager_resize_requests import ( InstanceGroupManagerResizeRequestsClient, @@ -203,6 +210,7 @@ from .services.licenses import LicensesClient from .services.machine_images import MachineImagesClient from .services.machine_types import MachineTypesClient +from .services.managed_rulesets import ManagedRulesetsClient from .services.network_attachments import NetworkAttachmentsClient from .services.network_edge_security_services import NetworkEdgeSecurityServicesClient from .services.network_endpoint_groups import NetworkEndpointGroupsClient @@ -516,6 +524,7 @@ CapacityHistoryAdviceRequest, CapacityHistoryRequest, CapacityHistoryRequestInstanceProperties, + CapacityHistoryRequestInstancePropertiesAttachedDisk, CapacityHistoryRequestInstancePropertiesScheduling, CapacityHistoryRequestLocationPolicy, CapacityHistoryResponse, @@ -790,6 +799,7 @@ GetFutureReservationRequest, GetGlobalAddressRequest, GetGlobalForwardingRuleRequest, + GetGlobalFrontendSettingRequest, GetGlobalNetworkEndpointGroupRequest, GetGlobalOperationRequest, GetGlobalOrganizationOperationRequest, @@ -841,6 +851,7 @@ GetIamPolicySubnetworkRequest, GetImageFamilyViewRequest, GetImageRequest, + GetImageViewRequest, GetInstanceGroupManagerRequest, GetInstanceGroupManagerResizeRequestRequest, GetInstanceGroupRequest, @@ -860,6 +871,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetManagedRulesetRequest, GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, @@ -967,6 +979,8 @@ GetZoneRequest, GetZoneVmExtensionPolicyRequest, GlobalAddressesMoveRequest, + GlobalFrontendSettings, + GlobalFrontendSettingsPatchResponse, GlobalNetworkEndpointGroupsAttachEndpointsRequest, GlobalNetworkEndpointGroupsDetachEndpointsRequest, GlobalOrganizationSetPolicyRequest, @@ -1040,6 +1054,8 @@ ImageFamilyView, ImageList, ImageParams, + ImageView, + ImageViewsListResponse, InitialStateConfig, InsertAddressRequest, InsertAutoscalerRequest, @@ -1315,6 +1331,7 @@ InterconnectRemoteLocationPermittedConnections, InterconnectsGetDiagnosticsResponse, InterconnectsGetMacsecConfigResponse, + InterconnectsSetNameRequest, Interval, InvalidateCacheUrlMapRequest, Items, @@ -1356,6 +1373,7 @@ ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -1377,6 +1395,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListManagedRulesetsRequest, ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, @@ -1493,6 +1512,8 @@ ManagedInstanceScheduling, ManagedInstanceShutdownDetails, ManagedInstanceVersion, + ManagedRuleset, + ManagedRulesetList, Metadata, MetadataFilter, MetadataFilterLabelMatch, @@ -1598,6 +1619,7 @@ PacketMirroringMirroredResourceInfoSubnetInfo, PacketMirroringNetworkInfo, PacketMirroringsScopedList, + PatchAssociationRegionNetworkFirewallPolicyRequest, PatchAutoscalerRequest, PatchBackendBucketRequest, PatchBackendServiceRequest, @@ -1606,6 +1628,7 @@ PatchFirewallRequest, PatchForwardingRuleRequest, PatchGlobalForwardingRuleRequest, + PatchGlobalFrontendSettingRequest, PatchGlobalPublicDelegatedPrefixeRequest, PatchHealthCheckRequest, PatchImageRequest, @@ -2030,6 +2053,7 @@ SetNamedPortsInstanceGroupRequest, SetNamedPortsRegionInstanceGroupRequest, SetNameInstanceRequest, + SetNameInterconnectRequest, SetNodeTemplateNodeGroupRequest, SetPrivateIpGoogleAccessSubnetworkRequest, SetProxyHeaderTargetSslProxyRequest, @@ -2596,6 +2620,7 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", @@ -2880,6 +2905,7 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", @@ -2931,6 +2957,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -2950,6 +2977,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -3059,6 +3087,9 @@ "GlobalAddressesClient", "GlobalAddressesMoveRequest", "GlobalForwardingRulesClient", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", + "GlobalFrontendSettingsServiceClient", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsClient", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", @@ -3138,6 +3169,9 @@ "ImageFamilyViewsClient", "ImageList", "ImageParams", + "ImageView", + "ImageViewsClient", + "ImageViewsListResponse", "ImagesClient", "InitialStateConfig", "InsertAddressRequest", @@ -3428,6 +3462,7 @@ "InterconnectsClient", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -3470,6 +3505,7 @@ "ListGlobalVmExtensionPoliciesRequest", "ListHealthChecksRequest", "ListHostsRequest", + "ListImageViewsRequest", "ListImagesRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", @@ -3492,6 +3528,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -3610,6 +3647,9 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", + "ManagedRulesetsClient", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -3726,6 +3766,7 @@ "PacketMirroringNetworkInfo", "PacketMirroringsClient", "PacketMirroringsScopedList", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -3734,6 +3775,7 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", "PatchHealthCheckRequest", "PatchImageRequest", @@ -4207,6 +4249,7 @@ "SetMetadataInstanceRequest", "SetMinCpuPlatformInstanceRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNodeTemplateNodeGroupRequest", diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json b/packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json index 85d4758279d6..4c2391ad3aa0 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json +++ b/packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json @@ -6,6 +6,7 @@ "schema": "1.0", "services": { "AcceleratorTypes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "AcceleratorTypesClient", @@ -30,6 +31,7 @@ } }, "Addresses": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "AddressesClient", @@ -79,6 +81,7 @@ } }, "Advice": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "AdviceClient", @@ -103,6 +106,7 @@ } }, "Autoscalers": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "AutoscalersClient", @@ -152,6 +156,7 @@ } }, "BackendBuckets": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "BackendBucketsClient", @@ -231,6 +236,7 @@ } }, "BackendServices": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "BackendServicesClient", @@ -325,6 +331,7 @@ } }, "CrossSiteNetworks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "CrossSiteNetworksClient", @@ -359,6 +366,7 @@ } }, "DiskTypes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "DiskTypesClient", @@ -383,6 +391,7 @@ } }, "Disks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "DisksClient", @@ -492,6 +501,7 @@ } }, "ExternalVpnGateways": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ExternalVpnGatewaysClient", @@ -531,6 +541,7 @@ } }, "FirewallPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "FirewallPoliciesClient", @@ -630,6 +641,7 @@ } }, "Firewalls": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "FirewallsClient", @@ -674,6 +686,7 @@ } }, "ForwardingRules": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ForwardingRulesClient", @@ -723,6 +736,7 @@ } }, "FutureReservations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "FutureReservationsClient", @@ -767,6 +781,7 @@ } }, "GlobalAddresses": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalAddressesClient", @@ -811,6 +826,7 @@ } }, "GlobalForwardingRules": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalForwardingRulesClient", @@ -854,7 +870,28 @@ } } }, + "GlobalFrontendSettingsService": { + "apiVersion": "2026-09-01", + "clients": { + "rest": { + "libraryClient": "GlobalFrontendSettingsServiceClient", + "rpcs": { + "Get": { + "methods": [ + "get" + ] + }, + "Patch": { + "methods": [ + "patch" + ] + } + } + } + } + }, "GlobalNetworkEndpointGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalNetworkEndpointGroupsClient", @@ -899,6 +936,7 @@ } }, "GlobalOperations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalOperationsClient", @@ -933,6 +971,7 @@ } }, "GlobalOrganizationOperations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalOrganizationOperationsClient", @@ -957,6 +996,7 @@ } }, "GlobalPublicDelegatedPrefixes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalPublicDelegatedPrefixesClient", @@ -991,6 +1031,7 @@ } }, "GlobalVmExtensionPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "GlobalVmExtensionPoliciesClient", @@ -1030,6 +1071,7 @@ } }, "HealthChecks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "HealthChecksClient", @@ -1079,6 +1121,7 @@ } }, "Hosts": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "HostsClient", @@ -1103,6 +1146,7 @@ } }, "ImageFamilyViews": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ImageFamilyViewsClient", @@ -1116,7 +1160,28 @@ } } }, + "ImageViews": { + "apiVersion": "2026-09-01", + "clients": { + "rest": { + "libraryClient": "ImageViewsClient", + "rpcs": { + "Get": { + "methods": [ + "get" + ] + }, + "List": { + "methods": [ + "list" + ] + } + } + } + } + }, "Images": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ImagesClient", @@ -1181,6 +1246,7 @@ } }, "InstanceGroupManagerResizeRequests": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstanceGroupManagerResizeRequestsClient", @@ -1215,6 +1281,7 @@ } }, "InstanceGroupManagers": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstanceGroupManagersClient", @@ -1344,6 +1411,7 @@ } }, "InstanceGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstanceGroupsClient", @@ -1403,6 +1471,7 @@ } }, "InstanceSettingsService": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstanceSettingsServiceClient", @@ -1422,6 +1491,7 @@ } }, "InstanceTemplates": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstanceTemplatesClient", @@ -1471,6 +1541,7 @@ } }, "Instances": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstancesClient", @@ -1735,6 +1806,7 @@ } }, "InstantSnapshotGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstantSnapshotGroupsClient", @@ -1779,6 +1851,7 @@ } }, "InstantSnapshots": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InstantSnapshotsClient", @@ -1833,6 +1906,7 @@ } }, "InterconnectAttachmentGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InterconnectAttachmentGroupsClient", @@ -1887,6 +1961,7 @@ } }, "InterconnectAttachments": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InterconnectAttachmentsClient", @@ -1931,6 +2006,7 @@ } }, "InterconnectGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InterconnectGroupsClient", @@ -1990,6 +2066,7 @@ } }, "InterconnectLocations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InterconnectLocationsClient", @@ -2009,6 +2086,7 @@ } }, "InterconnectRemoteLocations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InterconnectRemoteLocationsClient", @@ -2028,6 +2106,7 @@ } }, "Interconnects": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "InterconnectsClient", @@ -2071,12 +2150,18 @@ "methods": [ "set_labels" ] + }, + "SetName": { + "methods": [ + "set_name" + ] } } } } }, "LicenseCodes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "LicenseCodesClient", @@ -2106,6 +2191,7 @@ } }, "Licenses": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "LicensesClient", @@ -2155,6 +2241,7 @@ } }, "MachineImages": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "MachineImagesClient", @@ -2204,6 +2291,7 @@ } }, "MachineTypes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "MachineTypesClient", @@ -2227,7 +2315,28 @@ } } }, + "ManagedRulesets": { + "apiVersion": "2026-09-01", + "clients": { + "rest": { + "libraryClient": "ManagedRulesetsClient", + "rpcs": { + "Get": { + "methods": [ + "get" + ] + }, + "List": { + "methods": [ + "list" + ] + } + } + } + } + }, "NetworkAttachments": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NetworkAttachmentsClient", @@ -2282,6 +2391,7 @@ } }, "NetworkEdgeSecurityServices": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NetworkEdgeSecurityServicesClient", @@ -2316,6 +2426,7 @@ } }, "NetworkEndpointGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NetworkEndpointGroupsClient", @@ -2370,6 +2481,7 @@ } }, "NetworkFirewallPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NetworkFirewallPoliciesClient", @@ -2484,6 +2596,7 @@ } }, "NetworkProfiles": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NetworkProfilesClient", @@ -2503,6 +2616,7 @@ } }, "Networks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NetworksClient", @@ -2577,6 +2691,7 @@ } }, "NodeGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NodeGroupsClient", @@ -2661,6 +2776,7 @@ } }, "NodeTemplates": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NodeTemplatesClient", @@ -2710,6 +2826,7 @@ } }, "NodeTypes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "NodeTypesClient", @@ -2734,6 +2851,7 @@ } }, "OrganizationSecurityPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "OrganizationSecurityPoliciesClient", @@ -2823,6 +2941,7 @@ } }, "PacketMirrorings": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "PacketMirroringsClient", @@ -2867,6 +2986,7 @@ } }, "PreviewFeatures": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "PreviewFeaturesClient", @@ -2891,6 +3011,7 @@ } }, "ProjectViews": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ProjectViewsClient", @@ -2905,6 +3026,7 @@ } }, "Projects": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ProjectsClient", @@ -2984,6 +3106,7 @@ } }, "PublicAdvertisedPrefixes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "PublicAdvertisedPrefixesClient", @@ -3028,6 +3151,7 @@ } }, "PublicDelegatedPrefixes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "PublicDelegatedPrefixesClient", @@ -3077,6 +3201,7 @@ } }, "RegionAutoscalers": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionAutoscalersClient", @@ -3121,6 +3246,7 @@ } }, "RegionBackendBuckets": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionBackendBucketsClient", @@ -3175,6 +3301,7 @@ } }, "RegionBackendServices": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionBackendServicesClient", @@ -3244,6 +3371,7 @@ } }, "RegionCommitments": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionCommitmentsClient", @@ -3278,6 +3406,7 @@ } }, "RegionCompositeHealthChecks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionCompositeHealthChecksClient", @@ -3327,6 +3456,7 @@ } }, "RegionDiskTypes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionDiskTypesClient", @@ -3346,6 +3476,7 @@ } }, "RegionDisks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionDisksClient", @@ -3445,6 +3576,7 @@ } }, "RegionHealthAggregationPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionHealthAggregationPoliciesClient", @@ -3489,6 +3621,7 @@ } }, "RegionHealthCheckServices": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionHealthCheckServicesClient", @@ -3533,6 +3666,7 @@ } }, "RegionHealthChecks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionHealthChecksClient", @@ -3577,6 +3711,7 @@ } }, "RegionHealthSources": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionHealthSourcesClient", @@ -3626,6 +3761,7 @@ } }, "RegionInstanceGroupManagerResizeRequests": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstanceGroupManagerResizeRequestsClient", @@ -3660,6 +3796,7 @@ } }, "RegionInstanceGroupManagers": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstanceGroupManagersClient", @@ -3784,6 +3921,7 @@ } }, "RegionInstanceGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstanceGroupsClient", @@ -3818,6 +3956,7 @@ } }, "RegionInstanceTemplates": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstanceTemplatesClient", @@ -3847,6 +3986,7 @@ } }, "RegionInstances": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstancesClient", @@ -3861,6 +4001,7 @@ } }, "RegionInstantSnapshotGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstantSnapshotGroupsClient", @@ -3905,6 +4046,7 @@ } }, "RegionInstantSnapshots": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionInstantSnapshotsClient", @@ -3954,6 +4096,7 @@ } }, "RegionNetworkEndpointGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionNetworkEndpointGroupsClient", @@ -3998,6 +4141,7 @@ } }, "RegionNetworkFirewallPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionNetworkFirewallPoliciesClient", @@ -4062,6 +4206,11 @@ "patch" ] }, + "PatchAssociation": { + "methods": [ + "patch_association" + ] + }, "PatchRule": { "methods": [ "patch_rule" @@ -4092,6 +4241,7 @@ } }, "RegionNotificationEndpoints": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionNotificationEndpointsClient", @@ -4131,6 +4281,7 @@ } }, "RegionOperations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionOperationsClient", @@ -4160,6 +4311,7 @@ } }, "RegionSecurityPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionSecurityPoliciesClient", @@ -4219,6 +4371,7 @@ } }, "RegionSnapshotSettings": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionSnapshotSettingsClient", @@ -4238,6 +4391,7 @@ } }, "RegionSnapshots": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionSnapshotsClient", @@ -4292,6 +4446,7 @@ } }, "RegionSslCertificates": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionSslCertificatesClient", @@ -4321,6 +4476,7 @@ } }, "RegionSslPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionSslPoliciesClient", @@ -4360,6 +4516,7 @@ } }, "RegionTargetHttpProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionTargetHttpProxiesClient", @@ -4394,6 +4551,7 @@ } }, "RegionTargetHttpsProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionTargetHttpsProxiesClient", @@ -4438,6 +4596,7 @@ } }, "RegionTargetTcpProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionTargetTcpProxiesClient", @@ -4467,6 +4626,7 @@ } }, "RegionUrlMaps": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionUrlMapsClient", @@ -4511,6 +4671,7 @@ } }, "RegionZones": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionZonesClient", @@ -4525,6 +4686,7 @@ } }, "Regions": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RegionsClient", @@ -4544,6 +4706,7 @@ } }, "ReliabilityRisks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ReliabilityRisksClient", @@ -4563,6 +4726,7 @@ } }, "ReservationBlocks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ReservationBlocksClient", @@ -4602,6 +4766,7 @@ } }, "ReservationSlots": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ReservationSlotsClient", @@ -4636,6 +4801,7 @@ } }, "ReservationSubBlocks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ReservationSubBlocksClient", @@ -4685,6 +4851,7 @@ } }, "Reservations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ReservationsClient", @@ -4749,6 +4916,7 @@ } }, "ResourcePolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ResourcePoliciesClient", @@ -4803,6 +4971,7 @@ } }, "RolloutPlans": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RolloutPlansClient", @@ -4832,6 +5001,7 @@ } }, "Rollouts": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RolloutsClient", @@ -4876,6 +5046,7 @@ } }, "Routers": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RoutersClient", @@ -4995,6 +5166,7 @@ } }, "Routes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "RoutesClient", @@ -5029,6 +5201,7 @@ } }, "SecurityPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "SecurityPoliciesClient", @@ -5098,6 +5271,7 @@ } }, "ServiceAttachments": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ServiceAttachmentsClient", @@ -5152,6 +5326,7 @@ } }, "SnapshotSettingsService": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "SnapshotSettingsServiceClient", @@ -5171,6 +5346,7 @@ } }, "Snapshots": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "SnapshotsClient", @@ -5225,6 +5401,7 @@ } }, "SslCertificates": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "SslCertificatesClient", @@ -5259,6 +5436,7 @@ } }, "SslPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "SslPoliciesClient", @@ -5303,6 +5481,7 @@ } }, "StoragePoolTypes": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "StoragePoolTypesClient", @@ -5327,6 +5506,7 @@ } }, "StoragePools": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "StoragePoolsClient", @@ -5386,6 +5566,7 @@ } }, "Subnetworks": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "SubnetworksClient", @@ -5455,6 +5636,7 @@ } }, "TargetGrpcProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetGrpcProxiesClient", @@ -5489,6 +5671,7 @@ } }, "TargetHttpProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetHttpProxiesClient", @@ -5533,6 +5716,7 @@ } }, "TargetHttpsProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetHttpsProxiesClient", @@ -5597,6 +5781,7 @@ } }, "TargetInstances": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetInstancesClient", @@ -5641,6 +5826,7 @@ } }, "TargetPools": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetPoolsClient", @@ -5715,6 +5901,7 @@ } }, "TargetSslProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetSslProxiesClient", @@ -5774,6 +5961,7 @@ } }, "TargetTcpProxies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetTcpProxiesClient", @@ -5823,6 +6011,7 @@ } }, "TargetVpnGateways": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "TargetVpnGatewaysClient", @@ -5862,6 +6051,7 @@ } }, "UrlMaps": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "UrlMapsClient", @@ -5921,6 +6111,7 @@ } }, "VpnGateways": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "VpnGatewaysClient", @@ -5970,6 +6161,7 @@ } }, "VpnTunnels": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "VpnTunnelsClient", @@ -6009,6 +6201,7 @@ } }, "WireGroups": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "WireGroupsClient", @@ -6043,6 +6236,7 @@ } }, "ZoneOperations": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ZoneOperationsClient", @@ -6072,6 +6266,7 @@ } }, "ZoneVmExtensionPolicies": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ZoneVmExtensionPoliciesClient", @@ -6106,6 +6301,7 @@ } }, "Zones": { + "apiVersion": "2026-09-01", "clients": { "rest": { "libraryClient": "ZonesClient", diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py index a52f393b9c62..51ce76f041e0 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ class AcceleratorTypesClient(metaclass=AcceleratorTypesClientMeta): """Services The AcceleratorTypes API. - """ + This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -673,6 +680,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py index 5b3604c437ff..67c5f4205f7b 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class AddressesClient(metaclass=AddressesClientMeta): - """The Addresses API.""" + """The Addresses API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1111,6 +1133,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1371,6 +1403,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1521,6 +1558,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1681,6 +1723,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1830,6 +1877,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2006,6 +2058,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2157,6 +2214,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2333,6 +2395,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py index 74f0493fad1b..1aed6e98eef7 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class AdviceClient(metaclass=AdviceClientMeta): - """The Advice API.""" + """The Advice API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -693,6 +700,11 @@ def sample_calendar_mode(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -828,6 +840,11 @@ def sample_capacity(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_capacity_history(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py index 0134a0cba336..c81c7a612f46 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class AutoscalersClient(metaclass=AutoscalersClientMeta): - """The Autoscalers API.""" + """The Autoscalers API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -941,6 +958,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1112,6 +1134,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1242,6 +1269,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1372,6 +1404,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1523,6 +1560,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1666,6 +1708,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1798,6 +1845,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1971,6 +2023,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2101,6 +2158,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2231,6 +2293,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py index b126f5545e61..8e991d810195 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class BackendBucketsClient(metaclass=BackendBucketsClientMeta): - """The BackendBuckets API.""" + """The BackendBuckets API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -692,6 +699,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -828,6 +840,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -969,6 +986,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1226,6 +1253,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1389,6 +1421,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1528,6 +1565,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1679,6 +1721,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1831,6 +1878,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1947,6 +1999,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2063,6 +2120,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2199,6 +2261,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2320,6 +2387,11 @@ def sample_list_usable(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2465,6 +2537,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2599,6 +2676,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2762,6 +2844,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2901,6 +2988,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3089,6 +3181,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3225,6 +3322,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3357,6 +3459,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3489,6 +3596,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py index 4a3ebaf605a8..d7ba252b20d3 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class BackendServicesClient(metaclass=BackendServicesClientMeta): - """The BackendServices API.""" + """The BackendServices API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -694,6 +701,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -830,6 +842,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -973,6 +990,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1107,6 +1129,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1230,6 +1257,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1393,6 +1425,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1532,6 +1569,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1696,6 +1738,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1827,6 +1874,11 @@ def sample_get_effective_security_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1967,6 +2019,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2121,6 +2178,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2238,6 +2300,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2355,6 +2422,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2491,6 +2563,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2617,6 +2694,11 @@ def sample_list_usable(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2763,6 +2845,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2898,6 +2985,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3066,6 +3158,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3210,6 +3307,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3400,6 +3502,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3544,6 +3651,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3688,6 +3800,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3848,6 +3965,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3981,6 +4103,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4114,6 +4241,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py index d787527c5fe3..6f4811e8431b 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class CrossSiteNetworksClient(metaclass=CrossSiteNetworksClientMeta): - """The CrossSiteNetworks API.""" + """The CrossSiteNetworks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -685,6 +692,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -809,6 +821,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -961,6 +978,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1078,6 +1100,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1195,6 +1222,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1331,6 +1363,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1476,6 +1513,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1652,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py index 120c43bdc498..12f9e2e3e994 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class DiskTypesClient(metaclass=DiskTypesClientMeta): - """The DiskTypes API.""" + """The DiskTypes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -665,6 +672,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -824,6 +836,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -951,6 +968,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py index 6461e11d8d22..6fe9c85eea16 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class DisksClient(metaclass=DisksClientMeta): - """The Disks API.""" + """The Disks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -708,6 +715,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -860,6 +872,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -997,6 +1014,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1143,6 +1165,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1278,6 +1305,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1439,6 +1471,11 @@ def sample_bulk_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1575,6 +1612,11 @@ def sample_bulk_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1747,6 +1789,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1894,6 +1941,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2057,6 +2109,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2195,6 +2252,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2372,6 +2434,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2536,6 +2603,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2672,6 +2744,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2808,6 +2885,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2960,6 +3042,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3123,6 +3210,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3275,6 +3367,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3441,6 +3538,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3582,6 +3684,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3781,6 +3888,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3927,6 +4039,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4073,6 +4190,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4249,6 +4371,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4400,6 +4527,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4560,6 +4692,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4695,6 +4832,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4867,6 +5009,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5014,6 +5161,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5185,6 +5337,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5327,6 +5484,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5469,6 +5631,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5643,6 +5810,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5792,6 +5964,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py index e2fc671f6383..73cc29654974 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ExternalVpnGatewaysClient(metaclass=ExternalVpnGatewaysClientMeta): - """The ExternalVpnGateways API.""" + """The ExternalVpnGateways API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -684,6 +691,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -807,6 +819,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -972,6 +989,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1088,6 +1110,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1204,6 +1231,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1340,6 +1372,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1490,6 +1527,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1629,6 +1671,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1789,6 +1836,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py index 584a106a9080..7032aef17cdf 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class FirewallPoliciesClient(metaclass=FirewallPoliciesClientMeta): - """The FirewallPolicies API.""" + """The FirewallPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -685,6 +692,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -811,6 +823,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1072,6 +1094,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1206,6 +1233,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1317,6 +1349,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1451,6 +1488,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1562,6 +1604,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1694,6 +1741,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1805,6 +1857,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1945,6 +2002,11 @@ def sample_get_iam_policy(): gapic_v1.routing_header.to_grpc_metadata((("resource", request.resource),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2058,6 +2120,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2076,7 +2143,6 @@ def insert_unary( self, request: Optional[Union[compute.InsertFirewallPolicyRequest, dict]] = None, *, - parent_id: Optional[str] = None, firewall_policy_resource: Optional[compute.FirewallPolicy] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, @@ -2102,7 +2168,6 @@ def sample_insert(): # Initialize request argument(s) request = compute_v1.InsertFirewallPolicyRequest( - parent_id="parent_id_value", ) # Make the request @@ -2116,15 +2181,6 @@ def sample_insert(): The request object. A request message for FirewallPolicies.Insert. See the method description for details. - parent_id (str): - Parent ID for this request. The ID can be either be - "folders/[FOLDER_ID]" if the parent is a folder or - "organizations/[ORGANIZATION_ID]" if the parent is an - organization. - - This corresponds to the ``parent_id`` field - on the ``request`` instance; if ``request`` is provided, this - should not be set. firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy): The body resource for this request This corresponds to the ``firewall_policy_resource`` field @@ -2147,7 +2203,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 = [parent_id, firewall_policy_resource] + flattened_params = [firewall_policy_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2163,8 +2219,6 @@ def sample_insert(): request = compute.InsertFirewallPolicyRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. - if parent_id is not None: - request.parent_id = parent_id if firewall_policy_resource is not None: request.firewall_policy_resource = firewall_policy_resource @@ -2172,6 +2226,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2190,7 +2249,6 @@ def insert( self, request: Optional[Union[compute.InsertFirewallPolicyRequest, dict]] = None, *, - parent_id: Optional[str] = None, firewall_policy_resource: Optional[compute.FirewallPolicy] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, @@ -2216,7 +2274,6 @@ def sample_insert(): # Initialize request argument(s) request = compute_v1.InsertFirewallPolicyRequest( - parent_id="parent_id_value", ) # Make the request @@ -2230,15 +2287,6 @@ def sample_insert(): The request object. A request message for FirewallPolicies.Insert. See the method description for details. - parent_id (str): - Parent ID for this request. The ID can be either be - "folders/[FOLDER_ID]" if the parent is a folder or - "organizations/[ORGANIZATION_ID]" if the parent is an - organization. - - This corresponds to the ``parent_id`` field - on the ``request`` instance; if ``request`` is provided, this - should not be set. firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy): The body resource for this request This corresponds to the ``firewall_policy_resource`` field @@ -2261,7 +2309,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 = [parent_id, firewall_policy_resource] + flattened_params = [firewall_policy_resource] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2277,8 +2325,6 @@ def sample_insert(): request = compute.InsertFirewallPolicyRequest(request) # If we have keyword arguments corresponding to fields on the # request, apply these. - if parent_id is not None: - request.parent_id = parent_id if firewall_policy_resource is not None: request.firewall_policy_resource = firewall_policy_resource @@ -2286,6 +2332,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2391,6 +2442,11 @@ def sample_list(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2481,6 +2537,11 @@ def sample_list_associations(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list_associations] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2500,7 +2561,6 @@ def move_unary( request: Optional[Union[compute.MoveFirewallPolicyRequest, dict]] = None, *, firewall_policy: Optional[str] = None, - parent_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), @@ -2525,7 +2585,6 @@ def sample_move(): # Initialize request argument(s) request = compute_v1.MoveFirewallPolicyRequest( firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) # Make the request @@ -2546,15 +2605,6 @@ def sample_move(): This corresponds to the ``firewall_policy`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - parent_id (str): - The new parent of the firewall policy. The ID can be - either be "folders/[FOLDER_ID]" if the parent is a - folder or "organizations/[ORGANIZATION_ID]" if the - parent is an organization. - - This corresponds to the ``parent_id`` 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. @@ -2572,7 +2622,7 @@ def sample_move(): # 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 = [firewall_policy, parent_id] + flattened_params = [firewall_policy] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2590,8 +2640,6 @@ def sample_move(): # request, apply these. if firewall_policy is not None: request.firewall_policy = firewall_policy - if parent_id is not None: - request.parent_id = parent_id # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. @@ -2605,6 +2653,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2624,7 +2677,6 @@ def move( request: Optional[Union[compute.MoveFirewallPolicyRequest, dict]] = None, *, firewall_policy: Optional[str] = None, - parent_id: Optional[str] = None, retry: OptionalRetry = gapic_v1.method.DEFAULT, timeout: Union[float, object] = gapic_v1.method.DEFAULT, metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), @@ -2649,7 +2701,6 @@ def sample_move(): # Initialize request argument(s) request = compute_v1.MoveFirewallPolicyRequest( firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) # Make the request @@ -2670,15 +2721,6 @@ def sample_move(): This corresponds to the ``firewall_policy`` field on the ``request`` instance; if ``request`` is provided, this should not be set. - parent_id (str): - The new parent of the firewall policy. The ID can be - either be "folders/[FOLDER_ID]" if the parent is a - folder or "organizations/[ORGANIZATION_ID]" if the - parent is an organization. - - This corresponds to the ``parent_id`` 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. @@ -2696,7 +2738,7 @@ def sample_move(): # 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 = [firewall_policy, parent_id] + flattened_params = [firewall_policy] has_flattened_params = ( len([param for param in flattened_params if param is not None]) > 0 ) @@ -2714,8 +2756,6 @@ def sample_move(): # request, apply these. if firewall_policy is not None: request.firewall_policy = firewall_policy - if parent_id is not None: - request.parent_id = parent_id # Wrap the RPC method; this adds retry and timeout information, # and friendly error handling. @@ -2729,6 +2769,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2873,6 +2918,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2993,6 +3043,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3135,6 +3190,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3254,6 +3314,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3391,6 +3456,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3505,6 +3575,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3639,6 +3714,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3750,6 +3830,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3925,6 +4010,11 @@ def sample_set_iam_policy(): gapic_v1.routing_header.to_grpc_metadata((("resource", request.resource),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4047,6 +4137,11 @@ def sample_test_iam_permissions(): gapic_v1.routing_header.to_grpc_metadata((("resource", request.resource),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/transports/rest_base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/transports/rest_base.py index 75efce7c025a..ce54cfd5ba64 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/transports/rest_base.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/transports/rest_base.py @@ -221,9 +221,7 @@ class _BaseInsert: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "parentId": "", - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @staticmethod def _get_http_options(): @@ -268,9 +266,7 @@ class _BaseMove: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") - __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = { - "parentId": "", - } + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} @staticmethod def _get_http_options(): diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py index 353a1397d44a..b42b6cabade8 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class FirewallsClient(metaclass=FirewallsClientMeta): - """The Firewalls API.""" + """The Firewalls API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -677,6 +684,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -798,6 +810,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -946,6 +963,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1062,6 +1084,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1178,6 +1205,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1313,6 +1345,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1456,6 +1493,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1588,6 +1630,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1748,6 +1795,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1881,6 +1933,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2014,6 +2071,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py index b8d170a86fd2..26bde0bd3793 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ForwardingRulesClient(metaclass=ForwardingRulesClientMeta): - """The ForwardingRules API.""" + """The ForwardingRules API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -672,6 +679,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1127,6 +1149,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1260,6 +1287,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1393,6 +1425,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1546,6 +1583,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1703,6 +1745,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1849,6 +1896,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2026,6 +2078,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2178,6 +2235,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2347,6 +2409,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2491,6 +2558,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py index 4487b44fc88a..727be4fdd3eb 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class FutureReservationsClient(metaclass=FutureReservationsClientMeta): - """The FutureReservations API.""" + """The FutureReservations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -677,6 +684,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -824,6 +836,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -960,6 +977,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1121,6 +1143,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1257,6 +1284,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1417,6 +1449,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1548,6 +1585,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1679,6 +1721,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1830,6 +1877,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1989,6 +2041,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2137,6 +2194,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py index 04a1a39ec2ee..6da0356fe608 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class GlobalAddressesClient(metaclass=GlobalAddressesClientMeta): - """The GlobalAddresses API.""" + """The GlobalAddresses API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -804,6 +816,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -960,6 +977,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1076,6 +1098,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1192,6 +1219,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1327,6 +1359,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1474,6 +1511,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1652,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1770,6 +1817,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1906,6 +1958,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2066,6 +2123,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py index 49ff0cc96dde..f2d2c8a2a20c 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class GlobalForwardingRulesClient(metaclass=GlobalForwardingRulesClientMeta): - """The GlobalForwardingRules API.""" + """The GlobalForwardingRules API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -686,6 +693,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -811,6 +823,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -974,6 +991,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1093,6 +1115,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1212,6 +1239,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1348,6 +1380,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1493,6 +1530,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1627,6 +1669,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1790,6 +1837,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1929,6 +1981,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2088,6 +2145,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2223,6 +2285,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py new file mode 100644 index 000000000000..97600e68304c --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 GlobalFrontendSettingsServiceClient + +__all__ = ("GlobalFrontendSettingsServiceClient",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py new file mode 100644 index 000000000000..4a59f7320716 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py @@ -0,0 +1,852 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, GlobalFrontendSettingsServiceTransport +from .transports.rest import GlobalFrontendSettingsServiceRestTransport + + +class GlobalFrontendSettingsServiceClientMeta(type): + """Metaclass for the GlobalFrontendSettingsService 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[GlobalFrontendSettingsServiceTransport]] + _transport_registry["rest"] = GlobalFrontendSettingsServiceRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[GlobalFrontendSettingsServiceTransport]: + """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 GlobalFrontendSettingsServiceClient( + metaclass=GlobalFrontendSettingsServiceClientMeta +): + """The GlobalFrontendSettings API. This class implements API version 2026-09-01.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + GlobalFrontendSettingsServiceClient: 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: + GlobalFrontendSettingsServiceClient: 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) -> GlobalFrontendSettingsServiceTransport: + """Returns the transport used by the client instance. + + Returns: + GlobalFrontendSettingsServiceTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, + GlobalFrontendSettingsServiceTransport, + Callable[..., GlobalFrontendSettingsServiceTransport], + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the global frontend settings service 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,GlobalFrontendSettingsServiceTransport,Callable[..., GlobalFrontendSettingsServiceTransport]]]): + 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 GlobalFrontendSettingsServiceTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ( + GlobalFrontendSettingsServiceClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=GlobalFrontendSettingsServiceClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, GlobalFrontendSettingsServiceTransport + ) + if transport_provided: + # transport is a GlobalFrontendSettingsServiceTransport 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(GlobalFrontendSettingsServiceTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=GlobalFrontendSettingsServiceClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=GlobalFrontendSettingsServiceClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=GlobalFrontendSettingsServiceClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[GlobalFrontendSettingsServiceTransport], + Callable[..., GlobalFrontendSettingsServiceTransport], + ] = ( + GlobalFrontendSettingsServiceClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast( + Callable[..., GlobalFrontendSettingsServiceTransport], 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_v1.GlobalFrontendSettingsServiceClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "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.v1.GlobalFrontendSettingsService", + "credentialsType": None, + }, + ) + + def get( + self, + request: Optional[Union[compute.GetGlobalFrontendSettingRequest, 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]]] = (), + ) -> compute.GlobalFrontendSettings: + r"""Gets the Global Frontend Billing Bundle Settings for + a 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.GetGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetGlobalFrontendSettingRequest, dict]): + The request object. A request message for + GlobalFrontendSettingsService.Get. See + the method description for details. + project (str): + Required. 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_v1.types.GlobalFrontendSettings: + Represents the Global Frontend Bundle + settings for a single project. + + """ + # 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.GetGlobalFrontendSettingRequest): + request = compute.GetGlobalFrontendSettingRequest(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.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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 patch( + self, + request: Optional[ + Union[compute.PatchGlobalFrontendSettingRequest, dict] + ] = None, + *, + project: Optional[str] = None, + global_frontend_settings_resource: Optional[ + compute.GlobalFrontendSettings + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.GlobalFrontendSettingsPatchResponse: + r"""Updates the Global Frontend Billing Bundle Settings + for a 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_v1 + + def sample_patch(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.PatchGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchGlobalFrontendSettingRequest, dict]): + The request object. A request message for + GlobalFrontendSettingsService.Patch. See + the method description for details. + project (str): + Required. Project ID for this + request. + + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + global_frontend_settings_resource (google.cloud.compute_v1.types.GlobalFrontendSettings): + The body resource for this request + This corresponds to the ``global_frontend_settings_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_v1.types.GlobalFrontendSettingsPatchResponse: + Response to an + UpdateGlobalFrontendSettingsRequest. + + """ + # 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, global_frontend_settings_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.PatchGlobalFrontendSettingRequest): + request = compute.PatchGlobalFrontendSettingRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if global_frontend_settings_resource is not None: + request.global_frontend_settings_resource = ( + global_frontend_settings_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch] + + # 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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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) -> "GlobalFrontendSettingsServiceClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("GlobalFrontendSettingsServiceClient",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst new file mode 100644 index 000000000000..b497b03c147d --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``GlobalFrontendSettingsServiceTransport`` is the ABC for all transports. + +- public child ``GlobalFrontendSettingsServiceGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``GlobalFrontendSettingsServiceGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseGlobalFrontendSettingsServiceRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``GlobalFrontendSettingsServiceRestTransport`` 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/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py new file mode 100644 index 000000000000..a1123b1d5591 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 GlobalFrontendSettingsServiceTransport +from .rest import ( + GlobalFrontendSettingsServiceRestInterceptor, + GlobalFrontendSettingsServiceRestTransport, +) + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[GlobalFrontendSettingsServiceTransport]] +_transport_registry["rest"] = GlobalFrontendSettingsServiceRestTransport + +__all__ = ( + "GlobalFrontendSettingsServiceTransport", + "GlobalFrontendSettingsServiceRestTransport", + "GlobalFrontendSettingsServiceRestInterceptor", +) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py new file mode 100644 index 000000000000..edc1b9ae4643 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class GlobalFrontendSettingsServiceTransport(abc.ABC): + """Abstract transport class for GlobalFrontendSettingsService.""" + + 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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.patch: gapic_v1.method.wrap_method( + self.patch, + default_timeout=600.0, + 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 get( + self, + ) -> Callable[ + [compute.GetGlobalFrontendSettingRequest], + Union[ + compute.GlobalFrontendSettings, Awaitable[compute.GlobalFrontendSettings] + ], + ]: + raise NotImplementedError() + + @property + def patch( + self, + ) -> Callable[ + [compute.PatchGlobalFrontendSettingRequest], + Union[ + compute.GlobalFrontendSettingsPatchResponse, + Awaitable[compute.GlobalFrontendSettingsPatchResponse], + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("GlobalFrontendSettingsServiceTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py new file mode 100644 index 000000000000..cd4b74820c51 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py @@ -0,0 +1,626 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseGlobalFrontendSettingsServiceRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class GlobalFrontendSettingsServiceRestInterceptor: + """Interceptor for GlobalFrontendSettingsService. + + 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 GlobalFrontendSettingsServiceRestTransport. + + .. code-block:: python + class MyCustomGlobalFrontendSettingsServiceInterceptor(GlobalFrontendSettingsServiceRestInterceptor): + 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_patch(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_patch(self, response): + logging.log(f"Received response: {response}") + return response + + transport = GlobalFrontendSettingsServiceRestTransport(interceptor=MyCustomGlobalFrontendSettingsServiceInterceptor()) + client = GlobalFrontendSettingsServiceClient(transport=transport) + + + """ + + def pre_get( + self, + request: compute.GetGlobalFrontendSettingRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetGlobalFrontendSettingRequest, 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 GlobalFrontendSettingsService server. + """ + return request, metadata + + def post_get( + self, response: compute.GlobalFrontendSettings + ) -> compute.GlobalFrontendSettings: + """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 GlobalFrontendSettingsService 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.GlobalFrontendSettings, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.GlobalFrontendSettings, 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 GlobalFrontendSettingsService 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_patch( + self, + request: compute.PatchGlobalFrontendSettingRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.PatchGlobalFrontendSettingRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for patch + + Override in a subclass to manipulate the request or metadata + before they are sent to the GlobalFrontendSettingsService server. + """ + return request, metadata + + def post_patch( + self, response: compute.GlobalFrontendSettingsPatchResponse + ) -> compute.GlobalFrontendSettingsPatchResponse: + """Post-rpc interceptor for patch + + DEPRECATED. Please use the `post_patch_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the GlobalFrontendSettingsService server but before + it is returned to user code. This `post_patch` interceptor runs + before the `post_patch_with_metadata` interceptor. + """ + return response + + def post_patch_with_metadata( + self, + response: compute.GlobalFrontendSettingsPatchResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GlobalFrontendSettingsPatchResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for patch + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the GlobalFrontendSettingsService server but before it is returned to user code. + + We recommend only using this `post_patch_with_metadata` + interceptor in new development instead of the `post_patch` interceptor. + When both interceptors are used, this `post_patch_with_metadata` interceptor runs after the + `post_patch` interceptor. The (possibly modified) response returned by + `post_patch` will be passed to + `post_patch_with_metadata`. + """ + return response, metadata + + +@dataclasses.dataclass +class GlobalFrontendSettingsServiceRestStub: + _session: AuthorizedSession + _host: str + _interceptor: GlobalFrontendSettingsServiceRestInterceptor + + +class GlobalFrontendSettingsServiceRestTransport( + _BaseGlobalFrontendSettingsServiceRestTransport +): + """REST backend synchronous transport for GlobalFrontendSettingsService. + + The GlobalFrontendSettings 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[GlobalFrontendSettingsServiceRestInterceptor] = 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. + interceptor (Optional[GlobalFrontendSettingsServiceRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 GlobalFrontendSettingsServiceRestInterceptor() + ) + self._prep_wrapped_messages(client_info) + + class _Get( + _BaseGlobalFrontendSettingsServiceRestTransport._BaseGet, + GlobalFrontendSettingsServiceRestStub, + ): + def __hash__(self): + return hash("GlobalFrontendSettingsServiceRestTransport.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.GetGlobalFrontendSettingRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.GlobalFrontendSettings: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetGlobalFrontendSettingRequest): + The request object. A request message for + GlobalFrontendSettingsService.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.GlobalFrontendSettings: + Represents the Global Frontend Bundle + settings for a single project. + + """ + + http_options = _BaseGlobalFrontendSettingsServiceRestTransport._BaseGet._get_http_options() + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseGlobalFrontendSettingsServiceRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.GlobalFrontendSettingsServiceClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = GlobalFrontendSettingsServiceRestTransport._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.GlobalFrontendSettings() + pb_resp = compute.GlobalFrontendSettings.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.GlobalFrontendSettings.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_v1.GlobalFrontendSettingsServiceClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Patch( + _BaseGlobalFrontendSettingsServiceRestTransport._BasePatch, + GlobalFrontendSettingsServiceRestStub, + ): + def __hash__(self): + return hash("GlobalFrontendSettingsServiceRestTransport.Patch") + + @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.PatchGlobalFrontendSettingRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.GlobalFrontendSettingsPatchResponse: + r"""Call the patch method over HTTP. + + Args: + request (~.compute.PatchGlobalFrontendSettingRequest): + The request object. A request message for + GlobalFrontendSettingsService.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. + 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.GlobalFrontendSettingsPatchResponse: + Response to an + UpdateGlobalFrontendSettingsRequest. + + """ + + http_options = _BaseGlobalFrontendSettingsServiceRestTransport._BasePatch._get_http_options() + request, metadata = self._interceptor.pre_patch(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseGlobalFrontendSettingsServiceRestTransport._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.GlobalFrontendSettingsServiceClient.Patch", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Patch", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = GlobalFrontendSettingsServiceRestTransport._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 + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.GlobalFrontendSettingsPatchResponse() + pb_resp = compute.GlobalFrontendSettingsPatchResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_patch(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + 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.GlobalFrontendSettingsPatchResponse.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_v1.GlobalFrontendSettingsServiceClient.patch", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Patch", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def get( + self, + ) -> Callable[ + [compute.GetGlobalFrontendSettingRequest], compute.GlobalFrontendSettings + ]: + # 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 patch( + self, + ) -> Callable[ + [compute.PatchGlobalFrontendSettingRequest], + compute.GlobalFrontendSettingsPatchResponse, + ]: + # 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._Patch(self._session, self._host, self._interceptor) # type: ignore + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("GlobalFrontendSettingsServiceRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py new file mode 100644 index 000000000000..5c9d52218d84 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, GlobalFrontendSettingsServiceTransport + + +class _BaseGlobalFrontendSettingsServiceRestTransport( + GlobalFrontendSettingsServiceTransport +): + """Base REST backend transport for GlobalFrontendSettingsService. + + 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 _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/global/globalFrontendSettings", + }, + ] + return http_options + + class _BasePatch: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "patch", + "uri": "/compute/v1/projects/{project}/global/globalFrontendSettings", + "body": "global_frontend_settings_resource", + }, + ] + return http_options + + +__all__ = ("_BaseGlobalFrontendSettingsServiceRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py index 1136cd7c9eb0..9e22d0c8255d 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class GlobalNetworkEndpointGroupsClient( metaclass=GlobalNetworkEndpointGroupsClientMeta ): - """The GlobalNetworkEndpointGroups API.""" + """The GlobalNetworkEndpointGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -716,6 +723,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -865,6 +877,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1017,6 +1034,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1145,6 +1167,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1318,6 +1345,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1467,6 +1499,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1641,6 +1678,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1777,6 +1819,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1913,6 +1960,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2049,6 +2101,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2194,6 +2251,11 @@ def sample_list_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py index f8a4e608e0aa..01b91618aeea 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class GlobalOperationsClient(metaclass=GlobalOperationsClientMeta): - """The GlobalOperations API.""" + """The GlobalOperations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -806,6 +818,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1064,6 +1086,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1237,6 +1264,11 @@ def sample_wait(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py index 6f4313a819c7..439d5838e1a2 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class GlobalOrganizationOperationsClient( metaclass=GlobalOrganizationOperationsClientMeta ): - """The GlobalOrganizationOperations API.""" + """The GlobalOrganizationOperations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -903,6 +920,11 @@ def sample_list(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py index 136b0732e2b8..856c9c34b595 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class GlobalPublicDelegatedPrefixesClient( metaclass=GlobalPublicDelegatedPrefixesClientMeta ): - """The GlobalPublicDelegatedPrefixes API.""" + """The GlobalPublicDelegatedPrefixes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -694,6 +701,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -976,6 +993,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1099,6 +1121,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1222,6 +1249,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1358,6 +1390,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1513,6 +1550,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1657,6 +1699,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py index 60a058fc361a..1d65d6adc9cb 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class GlobalVmExtensionPoliciesClient(metaclass=GlobalVmExtensionPoliciesClientMeta): - """The GlobalVmExtensionPolicies API.""" + """The GlobalVmExtensionPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -684,6 +691,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -844,6 +856,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -993,6 +1010,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1142,6 +1164,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1263,6 +1290,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1384,6 +1416,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1521,6 +1558,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1673,6 +1715,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1814,6 +1861,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py index 60a00631cdd8..aee55b8a274a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class HealthChecksClient(metaclass=HealthChecksClientMeta): - """The HealthChecks API.""" + """The HealthChecks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -673,6 +680,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -807,6 +819,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -930,6 +947,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1102,6 +1124,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1218,6 +1245,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1334,6 +1366,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1470,6 +1507,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1615,6 +1657,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1749,6 +1796,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1909,6 +1961,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2041,6 +2098,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2173,6 +2235,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py index c7a38c3f077f..8cfbcc0ffaed 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class HostsClient(metaclass=HostsClientMeta): - """The Hosts API.""" + """The Hosts API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -705,6 +712,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -873,6 +885,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1041,6 +1058,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1207,6 +1229,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py index 7378c772b1a5..1e90c1831495 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class ImageFamilyViewsClient(metaclass=ImageFamilyViewsClientMeta): - """The ImageFamilyViews API.""" + """The ImageFamilyViews API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -690,6 +697,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py new file mode 100644 index 000000000000..bd3a7be6596b --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ImageViewsClient + +__all__ = ("ImageViewsClient",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py new file mode 100644 index 000000000000..589888b7097f --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py @@ -0,0 +1,882 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.services.image_views import pagers +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, ImageViewsTransport +from .transports.rest import ImageViewsRestTransport + + +class ImageViewsClientMeta(type): + """Metaclass for the ImageViews 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[ImageViewsTransport]] + _transport_registry["rest"] = ImageViewsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[ImageViewsTransport]: + """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 ImageViewsClient(metaclass=ImageViewsClientMeta): + """The ImageViews API. This class implements API version 2026-09-01.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + ImageViewsClient: 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: + ImageViewsClient: 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) -> ImageViewsTransport: + """Returns the transport used by the client instance. + + Returns: + ImageViewsTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, ImageViewsTransport, Callable[..., ImageViewsTransport]] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the image views 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,ImageViewsTransport,Callable[..., ImageViewsTransport]]]): + 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 ImageViewsTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ImageViewsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=ImageViewsClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, ImageViewsTransport) + if transport_provided: + # transport is a ImageViewsTransport 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(ImageViewsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=ImageViewsClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=ImageViewsClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=ImageViewsClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[ImageViewsTransport], Callable[..., ImageViewsTransport] + ] = ( + ImageViewsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., ImageViewsTransport], 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_v1.ImageViewsClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "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.v1.ImageViews", + "credentialsType": None, + }, + ) + + def get( + self, + request: Optional[Union[compute.GetImageViewRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + resource_id: 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.ImageView: + r"""Returns the specified global ImageView resource, with + a regional context. + + .. 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.GetImageViewRequest( + project="project_value", + region="region_value", + resource_id="resource_id_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetImageViewRequest, dict]): + The request object. A request message for ImageViews.Get. + See the method description for details. + project (str): + Required. 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): + Required. 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_id (str): + Name of the image resource to return. + This corresponds to the ``resource_id`` 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_v1.types.ImageView: + Represents a read-only view of a + global Image resource. + + """ + # 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_id] + 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.GetImageViewRequest): + request = compute.GetImageViewRequest(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_id is not None: + request.resource_id = resource_id + + # 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), + ("region", request.region), + ("resource_id", request.resource_id), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 list( + self, + request: Optional[Union[compute.ListImageViewsRequest, 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"""Returns a list of global ImageView resources, with a + regional context. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.ListImageViewsRequest( + 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_v1.types.ListImageViewsRequest, dict]): + The request object. A request message for + ImageViews.List. See the method + description for details. + project (str): + Required. 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): + Required. 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_v1.services.image_views.pagers.ListPager: + Response message for + ImageViewsService.List + 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.ListImageViewsRequest): + request = compute.ListImageViewsRequest(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), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 __enter__(self) -> "ImageViewsClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("ImageViewsClient",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py new file mode 100644 index 000000000000..75a0283c8338 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.ImageViewsListResponse` 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_v1.types.ImageViewsListResponse` + 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.ImageViewsListResponse], + request: compute.ListImageViewsRequest, + response: compute.ImageViewsListResponse, + *, + 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_v1.types.ListImageViewsRequest): + The initial request object. + response (google.cloud.compute_v1.types.ImageViewsListResponse): + 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.ListImageViewsRequest(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.ImageViewsListResponse]: + 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.ImageView]: + 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/google/cloud/compute_v1/services/image_views/transports/README.rst b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst new file mode 100644 index 000000000000..5c2f3bd36080 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``ImageViewsTransport`` is the ABC for all transports. + +- public child ``ImageViewsGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``ImageViewsGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseImageViewsRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``ImageViewsRestTransport`` 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/google/cloud/compute_v1/services/image_views/transports/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py new file mode 100644 index 000000000000..d6f5bdd8cc20 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ImageViewsTransport +from .rest import ImageViewsRestInterceptor, ImageViewsRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[ImageViewsTransport]] +_transport_registry["rest"] = ImageViewsRestTransport + +__all__ = ( + "ImageViewsTransport", + "ImageViewsRestTransport", + "ImageViewsRestInterceptor", +) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py new file mode 100644 index 000000000000..5ff45e3ba55f --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ImageViewsTransport(abc.ABC): + """Abstract transport class for ImageViews.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/compute.readonly", + "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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + 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 get( + self, + ) -> Callable[ + [compute.GetImageViewRequest], + Union[compute.ImageView, Awaitable[compute.ImageView]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListImageViewsRequest], + Union[ + compute.ImageViewsListResponse, Awaitable[compute.ImageViewsListResponse] + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("ImageViewsTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py new file mode 100644 index 000000000000..26399a431230 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py @@ -0,0 +1,592 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseImageViewsRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ImageViewsRestInterceptor: + """Interceptor for ImageViews. + + 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 ImageViewsRestTransport. + + .. code-block:: python + class MyCustomImageViewsInterceptor(ImageViewsRestInterceptor): + 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_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 + + transport = ImageViewsRestTransport(interceptor=MyCustomImageViewsInterceptor()) + client = ImageViewsClient(transport=transport) + + + """ + + def pre_get( + self, + request: compute.GetImageViewRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.GetImageViewRequest, 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 ImageViews server. + """ + return request, metadata + + def post_get(self, response: compute.ImageView) -> compute.ImageView: + """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 ImageViews 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.ImageView, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ImageView, 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 ImageViews 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_list( + self, + request: compute.ListImageViewsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ListImageViewsRequest, 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 ImageViews server. + """ + return request, metadata + + def post_list( + self, response: compute.ImageViewsListResponse + ) -> compute.ImageViewsListResponse: + """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 ImageViews 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.ImageViewsListResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ImageViewsListResponse, 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 ImageViews 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 + + +@dataclasses.dataclass +class ImageViewsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: ImageViewsRestInterceptor + + +class ImageViewsRestTransport(_BaseImageViewsRestTransport): + """REST backend synchronous transport for ImageViews. + + The ImageViews 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[ImageViewsRestInterceptor] = 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. + interceptor (Optional[ImageViewsRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 ImageViewsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _Get(_BaseImageViewsRestTransport._BaseGet, ImageViewsRestStub): + def __hash__(self): + return hash("ImageViewsRestTransport.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.GetImageViewRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ImageView: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetImageViewRequest): + The request object. A request message for ImageViews.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.ImageView: + Represents a read-only view of a + global Image resource. + + """ + + http_options = _BaseImageViewsRestTransport._BaseGet._get_http_options() + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseImageViewsRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ImageViewsClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ImageViewsRestTransport._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.ImageView() + pb_resp = compute.ImageView.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.ImageView.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_v1.ImageViewsClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseImageViewsRestTransport._BaseList, ImageViewsRestStub): + def __hash__(self): + return hash("ImageViewsRestTransport.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.ListImageViewsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ImageViewsListResponse: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListImageViewsRequest): + The request object. A request message for + ImageViews.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.ImageViewsListResponse: + Response message for + ImageViewsService.List + + """ + + http_options = _BaseImageViewsRestTransport._BaseList._get_http_options() + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseImageViewsRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ImageViewsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ImageViewsRestTransport._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.ImageViewsListResponse() + pb_resp = compute.ImageViewsListResponse.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.ImageViewsListResponse.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_v1.ImageViewsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def get(self) -> Callable[[compute.GetImageViewRequest], compute.ImageView]: + # 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 list( + self, + ) -> Callable[[compute.ListImageViewsRequest], compute.ImageViewsListResponse]: + # 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 kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("ImageViewsRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py new file mode 100644 index 000000000000..5277e12869e4 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, ImageViewsTransport + + +class _BaseImageViewsRestTransport(ImageViewsTransport): + """Base REST backend transport for ImageViews. + + 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 _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/regions/{region}/imageViews/{resource_id}", + }, + ] + return http_options + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/regions/{region}/imageViews", + }, + ] + return http_options + + +__all__ = ("_BaseImageViewsRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py index e8a544f31186..382533292ac5 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ImagesClient(metaclass=ImagesClientMeta): - """The Images API.""" + """The Images API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -796,6 +808,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_deprecate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1084,6 +1106,11 @@ def sample_deprecate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1231,6 +1258,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1363,6 +1395,11 @@ def sample_get_from_family(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1515,6 +1552,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1630,6 +1672,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1745,6 +1792,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1887,6 +1939,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2028,6 +2085,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2158,6 +2220,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2346,6 +2413,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2482,6 +2554,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2618,6 +2695,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2776,6 +2858,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py index 67a5b59c5dd2..4dcd06269187 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -119,7 +126,7 @@ def get_transport_class( class InstanceGroupManagerResizeRequestsClient( metaclass=InstanceGroupManagerResizeRequestsClientMeta ): - """The InstanceGroupManagerResizeRequests API.""" + """The InstanceGroupManagerResizeRequests API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -734,6 +741,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -891,6 +903,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1073,6 +1090,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1230,6 +1252,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1415,6 +1442,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1576,6 +1608,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1737,6 +1774,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1907,6 +1949,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py index b69e9542744d..5c994b9e1281 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstanceGroupManagersClient(metaclass=InstanceGroupManagersClientMeta): - """The InstanceGroupManagers API.""" + """The InstanceGroupManagers API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -734,6 +741,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -907,6 +919,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1047,6 +1064,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1221,6 +1243,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1384,6 +1411,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1571,6 +1603,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1733,6 +1770,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1898,6 +1940,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2038,6 +2085,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2235,6 +2287,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2407,6 +2464,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2596,6 +2658,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2760,6 +2827,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2931,6 +3003,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3079,6 +3156,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3227,6 +3309,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3379,6 +3466,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3534,6 +3626,11 @@ def sample_list_errors(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3694,6 +3791,11 @@ def sample_list_managed_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3853,6 +3955,11 @@ def sample_list_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4031,6 +4138,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4198,6 +4310,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4388,6 +4505,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4553,6 +4675,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4751,6 +4878,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4924,6 +5056,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5129,6 +5266,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5309,6 +5451,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5508,6 +5655,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5682,6 +5834,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5868,6 +6025,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6029,6 +6191,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6215,6 +6382,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6376,6 +6548,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6575,6 +6752,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6749,6 +6931,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6960,6 +7147,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7146,6 +7338,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7357,6 +7554,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7543,6 +7745,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7733,6 +7940,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7898,6 +8110,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py index 59fa2011df23..6a6e163129de 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstanceGroupsClient(metaclass=InstanceGroupsClientMeta): - """The InstanceGroups API.""" + """The InstanceGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -711,6 +718,11 @@ def sample_add_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -866,6 +878,11 @@ def sample_add_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1005,6 +1022,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1154,6 +1176,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1292,6 +1319,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1477,6 +1509,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1647,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1743,6 +1785,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1900,6 +1947,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2071,6 +2123,11 @@ def sample_list_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2243,6 +2300,11 @@ def sample_remove_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2404,6 +2466,11 @@ def sample_remove_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2584,6 +2651,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2739,6 +2811,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2912,6 +2989,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py index c4e3e1be8f5b..8d1fd83e9779 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class InstanceSettingsServiceClient(metaclass=InstanceSettingsServiceClientMeta): - """The InstanceSettings API.""" + """The InstanceSettings API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -950,6 +967,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py index 9524200c4c4c..075012027a0c 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstanceTemplatesClient(metaclass=InstanceTemplatesClientMeta): - """The InstanceTemplates API.""" + """The InstanceTemplates API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -817,6 +829,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -943,6 +960,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1105,6 +1127,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1259,6 +1286,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1379,6 +1411,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1499,6 +1536,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1635,6 +1677,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1812,6 +1859,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1948,6 +2000,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py index 4109abd9de94..d867fa4295b9 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstancesClient(metaclass=InstancesClientMeta): - """The Instances API.""" + """The Instances API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -715,6 +722,11 @@ def sample_add_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -874,6 +886,11 @@ def sample_add_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1046,6 +1063,11 @@ def sample_add_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1193,6 +1215,11 @@ def sample_add_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1372,6 +1399,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1526,6 +1558,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1668,6 +1705,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1824,6 +1866,11 @@ def sample_attach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1969,6 +2016,11 @@ def sample_attach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2131,6 +2183,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2268,6 +2325,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2429,6 +2491,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2565,6 +2632,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2746,6 +2818,11 @@ def sample_delete_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2902,6 +2979,11 @@ def sample_delete_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3083,6 +3165,11 @@ def sample_delete_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3239,6 +3326,11 @@ def sample_delete_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3410,6 +3502,11 @@ def sample_detach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3556,6 +3653,11 @@ def sample_detach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3719,6 +3821,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3866,6 +3973,11 @@ def sample_get_effective_firewalls(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4001,6 +4113,11 @@ def sample_get_guest_attributes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4165,6 +4282,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4298,6 +4420,11 @@ def sample_get_screenshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4434,6 +4561,11 @@ def sample_get_serial_port_output(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4571,6 +4703,11 @@ def sample_get_shielded_instance_identity(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4703,6 +4840,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4835,6 +4977,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4987,6 +5134,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5144,6 +5296,11 @@ def sample_list_referrers(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5292,6 +5449,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5429,6 +5591,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5606,6 +5773,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5758,6 +5930,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5938,6 +6115,11 @@ def sample_report_host_as_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6093,6 +6275,11 @@ def sample_report_host_as_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6255,6 +6442,11 @@ def sample_reset(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6392,6 +6584,11 @@ def sample_reset(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6553,6 +6750,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6689,6 +6891,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6854,6 +7061,11 @@ def sample_send_diagnostic_interrupt(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6991,6 +7203,11 @@ def sample_set_deletion_protection(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7128,6 +7345,11 @@ def sample_set_deletion_protection(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7311,6 +7533,11 @@ def sample_set_disk_auto_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7469,6 +7696,11 @@ def sample_set_disk_auto_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7668,6 +7900,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7821,6 +8058,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7974,6 +8216,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8154,6 +8401,11 @@ def sample_set_machine_resources(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8309,6 +8561,11 @@ def sample_set_machine_resources(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8487,6 +8744,11 @@ def sample_set_machine_type(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8640,6 +8902,11 @@ def sample_set_machine_type(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8809,6 +9076,11 @@ def sample_set_metadata(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8953,6 +9225,11 @@ def sample_set_metadata(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9133,6 +9410,11 @@ def sample_set_min_cpu_platform(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9288,6 +9570,11 @@ def sample_set_min_cpu_platform(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9463,6 +9750,11 @@ def sample_set_name(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9613,6 +9905,11 @@ def sample_set_name(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9784,6 +10081,11 @@ def sample_set_scheduling(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9930,6 +10232,11 @@ def sample_set_scheduling(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10110,6 +10417,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10265,6 +10577,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10444,6 +10761,11 @@ def sample_set_service_account(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10598,6 +10920,11 @@ def sample_set_service_account(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10784,6 +11111,11 @@ def sample_set_shielded_instance_integrity_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10945,6 +11277,11 @@ def sample_set_shielded_instance_integrity_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11115,6 +11452,11 @@ def sample_set_tags(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11260,6 +11602,11 @@ def sample_set_tags(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11425,6 +11772,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11565,6 +11917,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11727,6 +12084,11 @@ def sample_start(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11864,6 +12226,11 @@ def sample_start(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12047,6 +12414,11 @@ def sample_start_with_encryption_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12205,6 +12577,11 @@ def sample_start_with_encryption_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12370,6 +12747,11 @@ def sample_stop(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12510,6 +12892,11 @@ def sample_stop(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12679,6 +13066,11 @@ def sample_suspend(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12823,6 +13215,11 @@ def sample_suspend(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12996,6 +13393,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13142,6 +13544,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13288,6 +13695,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13477,6 +13889,11 @@ def sample_update_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13641,6 +14058,11 @@ def sample_update_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13814,6 +14236,11 @@ def sample_update_display_device(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13962,6 +14389,11 @@ def sample_update_display_device(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14153,6 +14585,11 @@ def sample_update_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14319,6 +14756,11 @@ def sample_update_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14498,6 +14940,11 @@ def sample_update_shielded_instance_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14652,6 +15099,11 @@ def sample_update_shielded_instance_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py index 1681c27645eb..e5b6a142bdde 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstantSnapshotGroupsClient(metaclass=InstantSnapshotGroupsClientMeta): - """The InstantSnapshotGroups API.""" + """The InstantSnapshotGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -698,6 +705,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1000,6 +1017,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1166,6 +1188,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1299,6 +1326,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1432,6 +1464,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1585,6 +1622,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1772,6 +1814,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1922,6 +1969,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py index a1fbee640fb3..48aa671c3e0b 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstantSnapshotsClient(metaclass=InstantSnapshotsClientMeta): - """The InstantSnapshots API.""" + """The InstantSnapshots API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -673,6 +680,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -828,6 +840,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -972,6 +989,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1135,6 +1157,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1301,6 +1328,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1430,6 +1462,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1559,6 +1596,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1712,6 +1754,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1899,6 +1946,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2046,6 +2098,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2193,6 +2250,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2366,6 +2428,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py index 33f253f81c2f..a3816c98f5f6 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class InterconnectAttachmentGroupsClient( metaclass=InterconnectAttachmentGroupsClientMeta ): - """The InterconnectAttachmentGroups API.""" + """The InterconnectAttachmentGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -829,6 +841,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -985,6 +1002,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1141,6 +1163,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1275,6 +1302,11 @@ def sample_get_operational_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1398,6 +1430,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1521,6 +1558,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1657,6 +1699,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1816,6 +1863,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1964,6 +2016,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2156,6 +2213,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2296,6 +2358,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py index f41fd4e05130..31b4ecf7ff65 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InterconnectAttachmentsClient(metaclass=InterconnectAttachmentsClientMeta): - """The InterconnectAttachments API.""" + """The InterconnectAttachments API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -960,6 +977,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1124,6 +1146,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1260,6 +1287,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1396,6 +1428,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1551,6 +1588,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1719,6 +1761,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1876,6 +1923,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2055,6 +2107,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2209,6 +2266,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py index 360aa2f9d797..9f8d34946a27 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InterconnectGroupsClient(metaclass=InterconnectGroupsClientMeta): - """The InterconnectGroups API.""" + """The InterconnectGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -703,6 +710,11 @@ def sample_create_members(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -845,6 +857,11 @@ def sample_create_members(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -993,6 +1010,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1117,6 +1139,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1266,6 +1293,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1420,6 +1452,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1548,6 +1585,11 @@ def sample_get_operational_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1665,6 +1707,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1782,6 +1829,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1916,6 +1968,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2061,6 +2118,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2195,6 +2257,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2385,6 +2452,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2521,6 +2593,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py index 6b679f552e8e..55ead8c355ea 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class InterconnectLocationsClient(metaclass=InterconnectLocationsClientMeta): - """The InterconnectLocations API.""" + """The InterconnectLocations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -800,6 +812,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py index c28ffa297f70..6dae17111e31 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class InterconnectRemoteLocationsClient( metaclass=InterconnectRemoteLocationsClientMeta ): - """The InterconnectRemoteLocations API.""" + """The InterconnectRemoteLocations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -697,6 +704,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -813,6 +825,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py index 3fdc6d91a469..52961ec77aa4 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InterconnectsClient(metaclass=InterconnectsClientMeta): - """The Interconnects API.""" + """The Interconnects API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -677,6 +684,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -798,6 +810,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -949,6 +966,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1083,6 +1105,11 @@ def sample_get_diagnostics(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1209,6 +1236,11 @@ def sample_get_macsec_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1325,6 +1357,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1441,6 +1478,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1577,6 +1619,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1720,6 +1767,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1852,6 +1904,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2013,6 +2070,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2150,6 +2212,319 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 set_name_unary( + self, + request: Optional[Union[compute.SetNameInterconnectRequest, dict]] = None, + *, + project: Optional[str] = None, + interconnect: Optional[str] = None, + interconnects_set_name_request_resource: Optional[ + compute.InterconnectsSetNameRequest + ] = 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"""Sets name of an interconnect. + + .. 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_v1 + + def sample_set_name(): + # Create a client + client = compute_v1.InterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.SetNameInterconnectRequest( + interconnect="interconnect_value", + project="project_value", + ) + + # Make the request + response = client.set_name(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.SetNameInterconnectRequest, dict]): + The request object. A request message for + Interconnects.SetName. 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. + interconnect (str): + Name of the interconnect to update. + This corresponds to the ``interconnect`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + interconnects_set_name_request_resource (google.cloud.compute_v1.types.InterconnectsSetNameRequest): + The body resource for this request + This corresponds to the ``interconnects_set_name_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, + interconnect, + interconnects_set_name_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.SetNameInterconnectRequest): + request = compute.SetNameInterconnectRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if interconnect is not None: + request.interconnect = interconnect + if interconnects_set_name_request_resource is not None: + request.interconnects_set_name_request_resource = ( + interconnects_set_name_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.set_name] + + # 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), + ("interconnect", request.interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 set_name( + self, + request: Optional[Union[compute.SetNameInterconnectRequest, dict]] = None, + *, + project: Optional[str] = None, + interconnect: Optional[str] = None, + interconnects_set_name_request_resource: Optional[ + compute.InterconnectsSetNameRequest + ] = 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"""Sets name of an interconnect. + + .. 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_v1 + + def sample_set_name(): + # Create a client + client = compute_v1.InterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.SetNameInterconnectRequest( + interconnect="interconnect_value", + project="project_value", + ) + + # Make the request + response = client.set_name(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.SetNameInterconnectRequest, dict]): + The request object. A request message for + Interconnects.SetName. 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. + interconnect (str): + Name of the interconnect to update. + This corresponds to the ``interconnect`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + interconnects_set_name_request_resource (google.cloud.compute_v1.types.InterconnectsSetNameRequest): + The body resource for this request + This corresponds to the ``interconnects_set_name_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, + interconnect, + interconnects_set_name_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.SetNameInterconnectRequest): + request = compute.SetNameInterconnectRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if interconnect is not None: + request.interconnect = interconnect + if interconnects_set_name_request_resource is not None: + request.interconnects_set_name_request_resource = ( + interconnects_set_name_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.set_name] + + # 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), + ("interconnect", request.interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py index 686229630179..b48700ec2037 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py @@ -225,6 +225,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.set_name: gapic_v1.method.wrap_method( + self.set_name, + default_timeout=600.0, + client_info=client_info, + ), } def close(self): @@ -314,6 +319,15 @@ def set_labels( ]: raise NotImplementedError() + @property + def set_name( + self, + ) -> Callable[ + [compute.SetNameInterconnectRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py index b35525821a2d..e5197ef5acf6 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py @@ -136,6 +136,14 @@ def post_set_labels(self, response): logging.log(f"Received response: {response}") return response + def pre_set_name(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_set_name(self, response): + logging.log(f"Received response: {response}") + return response + transport = InterconnectsRestTransport(interceptor=MyCustomInterconnectsInterceptor()) client = InterconnectsClient(transport=transport) @@ -520,6 +528,52 @@ def post_set_labels_with_metadata( """ return response, metadata + def pre_set_name( + self, + request: compute.SetNameInterconnectRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.SetNameInterconnectRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for set_name + + Override in a subclass to manipulate the request or metadata + before they are sent to the Interconnects server. + """ + return request, metadata + + def post_set_name(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for set_name + + DEPRECATED. Please use the `post_set_name_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Interconnects server but before + it is returned to user code. This `post_set_name` interceptor runs + before the `post_set_name_with_metadata` interceptor. + """ + return response + + def post_set_name_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 set_name + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Interconnects server but before it is returned to user code. + + We recommend only using this `post_set_name_with_metadata` + interceptor in new development instead of the `post_set_name` interceptor. + When both interceptors are used, this `post_set_name_with_metadata` interceptor runs after the + `post_set_name` interceptor. The (possibly modified) response returned by + `post_set_name` will be passed to + `post_set_name_with_metadata`. + """ + return response, metadata + @dataclasses.dataclass class InterconnectsRestStub: @@ -1913,6 +1967,181 @@ def __call__( ) return resp + class _SetName(_BaseInterconnectsRestTransport._BaseSetName, InterconnectsRestStub): + def __hash__(self): + return hash("InterconnectsRestTransport.SetName") + + @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.SetNameInterconnectRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the set name method over HTTP. + + Args: + request (~.compute.SetNameInterconnectRequest): + The request object. A request message for + Interconnects.SetName. 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 = ( + _BaseInterconnectsRestTransport._BaseSetName._get_http_options() + ) + request, metadata = self._interceptor.pre_set_name(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseInterconnectsRestTransport._BaseSetName, + "_BaseSetName__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.InterconnectsClient.SetName", + extra={ + "serviceName": "google.cloud.compute.v1.Interconnects", + "rpcName": "SetName", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = InterconnectsRestTransport._SetName._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_set_name(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_set_name_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_v1.InterconnectsClient.set_name", + extra={ + "serviceName": "google.cloud.compute.v1.Interconnects", + "rpcName": "SetName", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + @property def delete( self, @@ -1979,6 +2208,14 @@ def set_labels( # In C++ this would require a dynamic_cast return self._SetLabels(self._session, self._host, self._interceptor) # type: ignore + @property + def set_name( + self, + ) -> Callable[[compute.SetNameInterconnectRequest], 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._SetName(self._session, self._host, self._interceptor) # type: ignore + @property def kind(self) -> str: return "rest" diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py index 244e370be435..91bec16f265a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py @@ -218,5 +218,22 @@ def _get_http_options(): ] return http_options + class _BaseSetName: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/global/interconnects/{interconnect}/setName", + "body": "interconnects_set_name_request_resource", + }, + ] + return http_options + __all__ = ("_BaseInterconnectsRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py index 59baf3f835f6..4515ecb38e1d 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class LicenseCodesClient(metaclass=LicenseCodesClientMeta): - """The LicenseCodes API.""" + """The LicenseCodes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -836,6 +848,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1002,6 +1019,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1139,6 +1161,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py index ebf0140b7c00..6041c531d966 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class LicensesClient(metaclass=LicensesClientMeta): - """The Licenses API.""" + """The Licenses API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -806,6 +818,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1113,6 +1135,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1230,6 +1257,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1347,6 +1379,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1487,6 +1524,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1664,6 +1706,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1799,6 +1846,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1930,6 +1982,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2061,6 +2118,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py index e447d34e72dd..d1f9bb8d99a7 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class MachineImagesClient(metaclass=MachineImagesClientMeta): - """The MachineImages API.""" + """The MachineImages API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -804,6 +816,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -956,6 +973,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1108,6 +1130,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1228,6 +1255,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1348,6 +1380,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1484,6 +1521,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1659,6 +1701,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1795,6 +1842,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1931,6 +1983,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2091,6 +2148,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py index e55c6810f6a4..82fd7038b71e 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class MachineTypesClient(metaclass=MachineTypesClientMeta): - """The MachineTypes API.""" + """The MachineTypes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -667,6 +674,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -815,6 +827,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -943,6 +960,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py new file mode 100644 index 000000000000..5c6e780a49c4 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ManagedRulesetsClient + +__all__ = ("ManagedRulesetsClient",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py new file mode 100644 index 000000000000..3205ad1a8fea --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py @@ -0,0 +1,859 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.services.managed_rulesets import pagers +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, ManagedRulesetsTransport +from .transports.rest import ManagedRulesetsRestTransport + + +class ManagedRulesetsClientMeta(type): + """Metaclass for the ManagedRulesets 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[ManagedRulesetsTransport]] + _transport_registry["rest"] = ManagedRulesetsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[ManagedRulesetsTransport]: + """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 ManagedRulesetsClient(metaclass=ManagedRulesetsClientMeta): + """The ManagedRulesets API. This class implements API version 2026-09-01.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + ManagedRulesetsClient: 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: + ManagedRulesetsClient: 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) -> ManagedRulesetsTransport: + """Returns the transport used by the client instance. + + Returns: + ManagedRulesetsTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, ManagedRulesetsTransport, Callable[..., ManagedRulesetsTransport] + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the managed rulesets 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,ManagedRulesetsTransport,Callable[..., ManagedRulesetsTransport]]]): + 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 ManagedRulesetsTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ManagedRulesetsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=ManagedRulesetsClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, ManagedRulesetsTransport) + if transport_provided: + # transport is a ManagedRulesetsTransport 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(ManagedRulesetsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=ManagedRulesetsClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=ManagedRulesetsClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=ManagedRulesetsClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[ManagedRulesetsTransport], Callable[..., ManagedRulesetsTransport] + ] = ( + ManagedRulesetsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., ManagedRulesetsTransport], 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_v1.ManagedRulesetsClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "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.v1.ManagedRulesets", + "credentialsType": None, + }, + ) + + def get( + self, + request: Optional[Union[compute.GetManagedRulesetRequest, dict]] = None, + *, + project: Optional[str] = None, + managed_ruleset: 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.ManagedRuleset: + r"""Gets the details for the specified managed ruleset + name. + + .. 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.GetManagedRulesetRequest( + managed_ruleset="managed_ruleset_value", + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetManagedRulesetRequest, dict]): + The request object. A request message for + ManagedRulesets.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. + managed_ruleset (str): + Name of the managed ruleset to + return. + + This corresponds to the ``managed_ruleset`` 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_v1.types.ManagedRuleset: + Represents a ManagedRuleset resource. + + Managed internally by Cloud Armor CLH + for Managed Rules features. Customers + can only view these resources to modify + their Security Policies. For more + information, see + https://cloud.google.com/armor/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, managed_ruleset] + 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.GetManagedRulesetRequest): + request = compute.GetManagedRulesetRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if managed_ruleset is not None: + request.managed_ruleset = managed_ruleset + + # 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), + ("managed_ruleset", request.managed_ruleset), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 list( + self, + request: Optional[Union[compute.ListManagedRulesetsRequest, 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 all the managed rulesets + available. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.ListManagedRulesetsRequest( + 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_v1.types.ListManagedRulesetsRequest, dict]): + The request object. A request message for + ManagedRulesets.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_v1.services.managed_rulesets.pagers.ListPager: + 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.ListManagedRulesetsRequest): + request = compute.ListManagedRulesetsRequest(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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 __enter__(self) -> "ManagedRulesetsClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("ManagedRulesetsClient",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py new file mode 100644 index 000000000000..78b56cc35347 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.ManagedRulesetList` 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_v1.types.ManagedRulesetList` + 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.ManagedRulesetList], + request: compute.ListManagedRulesetsRequest, + response: compute.ManagedRulesetList, + *, + 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_v1.types.ListManagedRulesetsRequest): + The initial request object. + response (google.cloud.compute_v1.types.ManagedRulesetList): + 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.ListManagedRulesetsRequest(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.ManagedRulesetList]: + 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.ManagedRuleset]: + 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/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst new file mode 100644 index 000000000000..f54dedabc457 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``ManagedRulesetsTransport`` is the ABC for all transports. + +- public child ``ManagedRulesetsGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``ManagedRulesetsGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseManagedRulesetsRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``ManagedRulesetsRestTransport`` 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/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py new file mode 100644 index 000000000000..ea7086941754 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ManagedRulesetsTransport +from .rest import ManagedRulesetsRestInterceptor, ManagedRulesetsRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[ManagedRulesetsTransport]] +_transport_registry["rest"] = ManagedRulesetsRestTransport + +__all__ = ( + "ManagedRulesetsTransport", + "ManagedRulesetsRestTransport", + "ManagedRulesetsRestInterceptor", +) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py new file mode 100644 index 000000000000..138fb9dd7e92 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py @@ -0,0 +1,211 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ManagedRulesetsTransport(abc.ABC): + """Abstract transport class for ManagedRulesets.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/compute.readonly", + "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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + 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 get( + self, + ) -> Callable[ + [compute.GetManagedRulesetRequest], + Union[compute.ManagedRuleset, Awaitable[compute.ManagedRuleset]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListManagedRulesetsRequest], + Union[compute.ManagedRulesetList, Awaitable[compute.ManagedRulesetList]], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("ManagedRulesetsTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py new file mode 100644 index 000000000000..711d3259b23a --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py @@ -0,0 +1,607 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseManagedRulesetsRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ManagedRulesetsRestInterceptor: + """Interceptor for ManagedRulesets. + + 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 ManagedRulesetsRestTransport. + + .. code-block:: python + class MyCustomManagedRulesetsInterceptor(ManagedRulesetsRestInterceptor): + 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_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 + + transport = ManagedRulesetsRestTransport(interceptor=MyCustomManagedRulesetsInterceptor()) + client = ManagedRulesetsClient(transport=transport) + + + """ + + def pre_get( + self, + request: compute.GetManagedRulesetRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetManagedRulesetRequest, 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 ManagedRulesets server. + """ + return request, metadata + + def post_get(self, response: compute.ManagedRuleset) -> compute.ManagedRuleset: + """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 ManagedRulesets 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.ManagedRuleset, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ManagedRuleset, 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 ManagedRulesets 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_list( + self, + request: compute.ListManagedRulesetsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListManagedRulesetsRequest, 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 ManagedRulesets server. + """ + return request, metadata + + def post_list( + self, response: compute.ManagedRulesetList + ) -> compute.ManagedRulesetList: + """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 ManagedRulesets 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.ManagedRulesetList, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ManagedRulesetList, 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 ManagedRulesets 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 + + +@dataclasses.dataclass +class ManagedRulesetsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: ManagedRulesetsRestInterceptor + + +class ManagedRulesetsRestTransport(_BaseManagedRulesetsRestTransport): + """REST backend synchronous transport for ManagedRulesets. + + The ManagedRulesets 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[ManagedRulesetsRestInterceptor] = 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. + interceptor (Optional[ManagedRulesetsRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 ManagedRulesetsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _Get(_BaseManagedRulesetsRestTransport._BaseGet, ManagedRulesetsRestStub): + def __hash__(self): + return hash("ManagedRulesetsRestTransport.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.GetManagedRulesetRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ManagedRuleset: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetManagedRulesetRequest): + The request object. A request message for + ManagedRulesets.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.ManagedRuleset: + Represents a ManagedRuleset resource. + + Managed internally by Cloud Armor CLH + for Managed Rules features. Customers + can only view these resources to modify + their Security Policies. For more + information, see + https://cloud.google.com/armor/docs/. + + """ + + http_options = ( + _BaseManagedRulesetsRestTransport._BaseGet._get_http_options() + ) + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseManagedRulesetsRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ManagedRulesetsClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ManagedRulesetsRestTransport._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.ManagedRuleset() + pb_resp = compute.ManagedRuleset.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.ManagedRuleset.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_v1.ManagedRulesetsClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseManagedRulesetsRestTransport._BaseList, ManagedRulesetsRestStub): + def __hash__(self): + return hash("ManagedRulesetsRestTransport.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.ListManagedRulesetsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ManagedRulesetList: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListManagedRulesetsRequest): + The request object. A request message for + ManagedRulesets.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.ManagedRulesetList: + + """ + + http_options = ( + _BaseManagedRulesetsRestTransport._BaseList._get_http_options() + ) + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseManagedRulesetsRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ManagedRulesetsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ManagedRulesetsRestTransport._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.ManagedRulesetList() + pb_resp = compute.ManagedRulesetList.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.ManagedRulesetList.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_v1.ManagedRulesetsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def get( + self, + ) -> Callable[[compute.GetManagedRulesetRequest], compute.ManagedRuleset]: + # 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 list( + self, + ) -> Callable[[compute.ListManagedRulesetsRequest], compute.ManagedRulesetList]: + # 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 kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("ManagedRulesetsRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py new file mode 100644 index 000000000000..56c8256d6798 --- /dev/null +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, ManagedRulesetsTransport + + +class _BaseManagedRulesetsRestTransport(ManagedRulesetsTransport): + """Base REST backend transport for ManagedRulesets. + + 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 _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/global/managedRulesets/{managed_ruleset}", + }, + ] + return http_options + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/global/managedRulesets", + }, + ] + return http_options + + +__all__ = ("_BaseManagedRulesetsRestTransport",) diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py index 7d433cebbfb4..0a9f329a0afc 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworkAttachmentsClient(metaclass=NetworkAttachmentsClientMeta): - """The NetworkAttachments API.""" + """The NetworkAttachments API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -823,6 +835,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -957,6 +974,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1116,6 +1138,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1282,6 +1309,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1413,6 +1445,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1544,6 +1581,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1693,6 +1735,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1853,6 +1900,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2002,6 +2054,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2210,6 +2267,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2363,6 +2425,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py index cf93355c61b4..76978247bfac 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class NetworkEdgeSecurityServicesClient( metaclass=NetworkEdgeSecurityServicesClientMeta ): - """The NetworkEdgeSecurityServices API.""" + """The NetworkEdgeSecurityServices API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -686,6 +693,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -977,6 +994,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1142,6 +1164,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1280,6 +1307,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1418,6 +1450,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1601,6 +1638,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1759,6 +1801,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py index 753585a964e5..72fe5cbf7802 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworkEndpointGroupsClient(metaclass=NetworkEndpointGroupsClientMeta): - """The NetworkEndpointGroups API.""" + """The NetworkEndpointGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -847,6 +859,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1007,6 +1024,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1175,6 +1197,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1318,6 +1345,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1503,6 +1535,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1663,6 +1700,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1849,6 +1891,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2002,6 +2049,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2155,6 +2207,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2307,6 +2364,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2480,6 +2542,11 @@ def sample_list_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2641,6 +2708,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py index a2adf46b47a6..a426cf962672 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworkFirewallPoliciesClient(metaclass=NetworkFirewallPoliciesClientMeta): - """The NetworkFirewallPolicies API.""" + """The NetworkFirewallPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -705,6 +712,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -847,6 +859,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1011,6 +1028,11 @@ def sample_add_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1151,6 +1173,11 @@ def sample_add_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1308,6 +1335,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1441,6 +1473,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1583,6 +1620,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1719,6 +1761,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1844,6 +1891,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1993,6 +2045,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2118,6 +2175,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2263,6 +2325,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2386,6 +2453,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2540,6 +2612,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2674,6 +2751,11 @@ def sample_get_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2801,6 +2883,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2919,6 +3006,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3037,6 +3129,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3173,6 +3270,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3318,6 +3420,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3452,6 +3559,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3616,6 +3728,11 @@ def sample_patch_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3756,6 +3873,11 @@ def sample_patch_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3913,6 +4035,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4046,6 +4173,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4198,6 +4330,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4326,6 +4463,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4482,6 +4624,11 @@ def sample_remove_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4614,6 +4761,11 @@ def sample_remove_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4763,6 +4915,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4888,6 +5045,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5078,6 +5240,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5216,6 +5383,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py index 7029d6f895be..a204e863657a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class NetworkProfilesClient(metaclass=NetworkProfilesClientMeta): - """The NetworkProfiles API.""" + """The NetworkProfiles API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -790,6 +802,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py index 7000b325e2fc..04bcb114285a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworksClient(metaclass=NetworksClientMeta): - """The Networks API.""" + """The Networks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -691,6 +698,11 @@ def sample_add_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -826,6 +838,11 @@ def sample_add_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -996,6 +1013,11 @@ def sample_cancel_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1142,6 +1164,11 @@ def sample_cancel_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1287,6 +1314,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1408,6 +1440,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1556,6 +1593,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1677,6 +1719,11 @@ def sample_get_effective_firewalls(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1840,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1909,6 +1961,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2044,6 +2101,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2179,6 +2241,11 @@ def sample_list_peering_routes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2319,6 +2386,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2448,6 +2520,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2607,6 +2684,11 @@ def sample_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2742,6 +2824,11 @@ def sample_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2909,6 +2996,11 @@ def sample_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3052,6 +3144,11 @@ def sample_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3198,6 +3295,11 @@ def sample_switch_to_custom_mode(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3320,6 +3422,11 @@ def sample_switch_to_custom_mode(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3482,6 +3589,11 @@ def sample_update_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3620,6 +3732,11 @@ def sample_update_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py index 236a57c779a1..a691989ad7c8 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NodeGroupsClient(metaclass=NodeGroupsClientMeta): - """The NodeGroups API.""" + """The NodeGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -706,6 +713,11 @@ def sample_add_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -856,6 +868,11 @@ def sample_add_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -994,6 +1011,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1140,6 +1162,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1275,6 +1302,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1452,6 +1484,11 @@ def sample_delete_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1604,6 +1641,11 @@ def sample_delete_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1773,6 +1815,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1937,6 +1984,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2080,6 +2132,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2223,6 +2280,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2377,6 +2439,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2525,6 +2592,11 @@ def sample_list_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2679,6 +2751,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2822,6 +2899,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3002,6 +3084,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3157,6 +3244,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3356,6 +3448,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3508,6 +3605,11 @@ def sample_set_node_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3660,6 +3762,11 @@ def sample_set_node_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3843,6 +3950,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4001,6 +4113,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4174,6 +4291,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py index ffc2c8414a87..13d0e4022763 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NodeTemplatesClient(metaclass=NodeTemplatesClientMeta): - """The NodeTemplates API.""" + """The NodeTemplates API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -816,6 +828,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -951,6 +968,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1113,6 +1135,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1277,6 +1304,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1409,6 +1441,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1541,6 +1578,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1694,6 +1736,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1886,6 +1933,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2039,6 +2091,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py index 059ed2635389..8f47f0637d58 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class NodeTypesClient(metaclass=NodeTypesClientMeta): - """The NodeTypes API.""" + """The NodeTypes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -665,6 +672,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -816,6 +828,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -943,6 +960,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py index f2878de908e6..24ff06fb36a1 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class OrganizationSecurityPoliciesClient( metaclass=OrganizationSecurityPoliciesClientMeta ): - """The OrganizationSecurityPolicies API.""" + """The OrganizationSecurityPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -707,6 +714,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -845,6 +857,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -994,6 +1011,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1120,6 +1142,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1261,6 +1288,11 @@ def sample_copy_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1379,6 +1411,11 @@ def sample_copy_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1520,6 +1557,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1638,6 +1680,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1781,6 +1828,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1900,6 +1952,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2020,6 +2077,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2128,6 +2190,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2236,6 +2303,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2348,6 +2420,11 @@ def sample_list(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2445,6 +2522,11 @@ def sample_list_associations(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list_associations] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2534,6 +2616,11 @@ def sample_list_preconfigured_expression_sets(): self._transport.list_preconfigured_expression_sets ] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2652,6 +2739,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2770,6 +2862,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2920,6 +3017,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3046,6 +3148,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3195,6 +3302,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3321,6 +3433,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3467,6 +3584,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3590,6 +3712,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3731,6 +3858,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3849,6 +3981,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py index 9e16d31509b4..64dadde2cec9 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PacketMirroringsClient(metaclass=PacketMirroringsClientMeta): - """The PacketMirrorings API.""" + """The PacketMirrorings API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1120,6 +1142,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1251,6 +1278,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1382,6 +1414,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1533,6 +1570,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1693,6 +1735,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1842,6 +1889,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2020,6 +2072,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py index 846ae0fbeb32..5e706f58cedf 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PreviewFeaturesClient(metaclass=PreviewFeaturesClientMeta): - """The PreviewFeatures API.""" + """The PreviewFeatures API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -790,6 +802,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -933,6 +950,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1065,6 +1087,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py index e8b9f2faf1ac..f8668f124511 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class ProjectViewsClient(metaclass=ProjectViewsClientMeta): - """The ProjectViews API.""" + """The ProjectViews API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -687,6 +694,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py index 7444f968fe37..5585959c2689 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ProjectsClient(metaclass=ProjectsClientMeta): - """The Projects API.""" + """The Projects API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -663,6 +670,11 @@ def sample_disable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -770,6 +782,11 @@ def sample_disable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -914,6 +931,11 @@ def sample_disable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1034,6 +1056,11 @@ def sample_disable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1165,6 +1192,11 @@ def sample_enable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1272,6 +1304,11 @@ def sample_enable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1417,6 +1454,11 @@ def sample_enable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1538,6 +1580,11 @@ def sample_enable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1681,6 +1728,11 @@ def sample_get(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1845,11 @@ def sample_get_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1903,6 +1960,11 @@ def sample_get_xpn_resources(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2036,6 +2098,11 @@ def sample_list_xpn_hosts(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2176,6 +2243,11 @@ def sample_move_disk(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2305,6 +2377,11 @@ def sample_move_disk(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2452,6 +2529,11 @@ def sample_move_instance(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2575,6 +2657,11 @@ def sample_move_instance(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2722,6 +2809,11 @@ def sample_set_cloud_armor_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2845,6 +2937,11 @@ def sample_set_cloud_armor_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2990,6 +3087,11 @@ def sample_set_common_instance_metadata(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3111,6 +3213,11 @@ def sample_set_common_instance_metadata(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3259,6 +3366,11 @@ def sample_set_default_network_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3383,6 +3495,11 @@ def sample_set_default_network_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3527,6 +3644,11 @@ def sample_set_usage_export_bucket(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3647,6 +3769,11 @@ def sample_set_usage_export_bucket(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py index 5708f8e097c8..5982adc971f4 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PublicAdvertisedPrefixesClient(metaclass=PublicAdvertisedPrefixesClientMeta): - """The PublicAdvertisedPrefixes API.""" + """The PublicAdvertisedPrefixes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -813,6 +825,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -962,6 +979,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1087,6 +1109,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1364,6 +1396,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1487,6 +1524,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1622,6 +1664,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1777,6 +1824,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1921,6 +1973,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2070,6 +2127,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2195,6 +2257,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py index 40da4860ea45..4223a686451b 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PublicDelegatedPrefixesClient(metaclass=PublicDelegatedPrefixesClientMeta): - """The PublicDelegatedPrefixes API.""" + """The PublicDelegatedPrefixes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -832,6 +844,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -971,6 +988,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1132,6 +1154,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1268,6 +1295,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1434,6 +1466,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1571,6 +1608,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1708,6 +1750,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1859,6 +1906,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2025,6 +2077,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2180,6 +2237,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2344,6 +2406,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2483,6 +2550,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py index 896de722cefa..9b13c50ff44d 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionAutoscalersClient(metaclass=RegionAutoscalersClientMeta): - """The RegionAutoscalers API.""" + """The RegionAutoscalers API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -694,6 +701,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -827,6 +839,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1000,6 +1017,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1132,6 +1154,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1264,6 +1291,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1417,6 +1449,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1562,6 +1599,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1696,6 +1738,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1874,6 +1921,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2006,6 +2058,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2138,6 +2195,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py index e1d2b8ee9e8a..67330356d989 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionBackendBucketsClient(metaclass=RegionBackendBucketsClientMeta): - """The RegionBackendBuckets API.""" + """The RegionBackendBuckets API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -697,6 +704,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -833,6 +845,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -998,6 +1015,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1164,6 +1186,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1295,6 +1322,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1426,6 +1458,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1577,6 +1614,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1717,6 +1759,11 @@ def sample_list_usable(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1874,6 +1921,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2020,6 +2072,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2228,6 +2285,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2383,6 +2445,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py index 2ccf8099ad1e..e3c783de93bb 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionBackendServicesClient(metaclass=RegionBackendServicesClientMeta): - """The RegionBackendServices API.""" + """The RegionBackendServices API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1015,6 +1032,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1168,6 +1190,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1334,6 +1361,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1470,6 +1502,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1606,6 +1643,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1760,6 +1802,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1905,6 +1952,11 @@ def sample_list_usable(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2064,6 +2116,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2212,6 +2269,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2420,6 +2482,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2579,6 +2646,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2738,6 +2810,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2918,6 +2995,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3066,6 +3148,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3214,6 +3301,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py index 3ffa31ae566c..9e7521a3c98c 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionCommitmentsClient(metaclass=RegionCommitmentsClientMeta): - """The RegionCommitments API.""" + """The RegionCommitments API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -955,6 +972,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1085,6 +1107,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1236,6 +1263,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1391,6 +1423,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1535,6 +1572,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py index 4b183dd72c43..022b7f4c80ab 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionCompositeHealthChecksClient( metaclass=RegionCompositeHealthChecksClientMeta ): - """The RegionCompositeHealthChecks API.""" + """The RegionCompositeHealthChecks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -975,6 +992,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1144,6 +1166,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1284,6 +1311,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1421,6 +1453,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1558,6 +1595,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1711,6 +1753,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1878,6 +1925,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2034,6 +2086,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2216,6 +2273,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py index c4d4adc21bcd..c6673d10da18 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionDiskTypesClient(metaclass=RegionDiskTypesClientMeta): - """The RegionDiskTypes API.""" + """The RegionDiskTypes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -704,6 +711,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -830,6 +842,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py index fdf6af5e50a8..5f98498e8bb3 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionDisksClient(metaclass=RegionDisksClientMeta): - """The RegionDisks API.""" + """The RegionDisks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -710,6 +717,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -864,6 +876,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1024,6 +1041,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1159,6 +1181,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1329,6 +1356,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1474,6 +1506,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1636,6 +1673,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1773,6 +1815,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1949,6 +1996,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2113,6 +2165,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2243,6 +2300,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2373,6 +2435,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2524,6 +2591,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2687,6 +2759,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2839,6 +2916,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3007,6 +3089,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3150,6 +3237,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3356,6 +3448,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3506,6 +3603,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3656,6 +3758,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3834,6 +3941,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3987,6 +4099,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4149,6 +4266,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4286,6 +4408,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4458,6 +4585,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4605,6 +4737,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4783,6 +4920,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4926,6 +5068,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5069,6 +5216,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5248,6 +5400,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5402,6 +5559,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py index 7c479af102cb..f26603b36419 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -117,7 +124,7 @@ def get_transport_class( class RegionHealthAggregationPoliciesClient( metaclass=RegionHealthAggregationPoliciesClientMeta ): - """The RegionHealthAggregationPolicies API.""" + """The RegionHealthAggregationPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -695,6 +702,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -844,6 +856,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -982,6 +999,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1150,6 +1172,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1289,6 +1316,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1428,6 +1460,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1581,6 +1618,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1752,6 +1794,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1912,6 +1959,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2094,6 +2146,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py index e564162897a3..6a025886b4a1 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionHealthCheckServicesClient(metaclass=RegionHealthCheckServicesClientMeta): - """The RegionHealthCheckServices API.""" + """The RegionHealthCheckServices API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -684,6 +691,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -833,6 +845,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -971,6 +988,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1135,6 +1157,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1270,6 +1297,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1405,6 +1437,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1559,6 +1596,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1724,6 +1766,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1878,6 +1925,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2058,6 +2110,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py index 543657447889..9de1d3fc532a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionHealthChecksClient(metaclass=RegionHealthChecksClientMeta): - """The RegionHealthChecks API.""" + """The RegionHealthChecks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -696,6 +703,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -831,6 +843,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1016,6 +1033,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1148,6 +1170,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1280,6 +1307,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1433,6 +1465,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1590,6 +1627,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1736,6 +1778,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1914,6 +1961,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2058,6 +2110,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2202,6 +2259,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py index a9ae6ba4616b..00dab2371a85 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionHealthSourcesClient(metaclass=RegionHealthSourcesClientMeta): - """The RegionHealthSources API.""" + """The RegionHealthSources API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -827,6 +839,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -963,6 +980,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1129,6 +1151,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1269,6 +1296,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1402,6 +1434,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1535,6 +1572,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1686,6 +1728,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1844,6 +1891,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1991,6 +2043,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2169,6 +2226,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py index f859112e1b9f..c9bfd4292fbb 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -119,7 +126,7 @@ def get_transport_class( class RegionInstanceGroupManagerResizeRequestsClient( metaclass=RegionInstanceGroupManagerResizeRequestsClientMeta ): - """The RegionInstanceGroupManagerResizeRequests API.""" + """The RegionInstanceGroupManagerResizeRequests API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -738,6 +745,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -897,6 +909,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1081,6 +1098,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1240,6 +1262,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1426,6 +1453,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1588,6 +1620,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1787,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1921,6 +1963,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py index d2f47add6ae0..a166db9a6a9b 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionInstanceGroupManagersClient( metaclass=RegionInstanceGroupManagersClientMeta ): - """The RegionInstanceGroupManagers API.""" + """The RegionInstanceGroupManagers API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -741,6 +748,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -915,6 +927,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1104,6 +1121,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1268,6 +1290,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1458,6 +1485,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1623,6 +1655,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1786,6 +1823,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1924,6 +1966,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2123,6 +2170,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2297,6 +2349,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2486,6 +2543,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2650,6 +2712,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2823,6 +2890,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2969,6 +3041,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3115,6 +3192,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3270,6 +3352,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3426,6 +3513,11 @@ def sample_list_errors(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3585,6 +3677,11 @@ def sample_list_managed_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3745,6 +3842,11 @@ def sample_list_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3924,6 +4026,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4092,6 +4199,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4283,6 +4395,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4449,6 +4566,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4647,6 +4769,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4820,6 +4947,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5007,6 +5139,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5169,6 +5306,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5369,6 +5511,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5544,6 +5691,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5729,6 +5881,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5889,6 +6046,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6071,6 +6233,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6228,6 +6395,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6428,6 +6600,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6603,6 +6780,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6817,6 +6999,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7006,6 +7193,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7218,6 +7410,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7405,6 +7602,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7596,6 +7798,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7762,6 +7969,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py index 4ddb4d057866..d1d59cbabe47 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionInstanceGroupsClient(metaclass=RegionInstanceGroupsClientMeta): - """The RegionInstanceGroups API.""" + """The RegionInstanceGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -717,6 +724,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -845,6 +857,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1016,6 +1033,11 @@ def sample_list_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1182,6 +1204,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1337,6 +1364,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1517,6 +1549,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py index c84f8a8e0f91..e85b39a72dc8 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionInstanceTemplatesClient(metaclass=RegionInstanceTemplatesClientMeta): - """The RegionInstanceTemplates API.""" + """The RegionInstanceTemplates API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -701,6 +708,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -839,6 +851,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1014,6 +1031,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1149,6 +1171,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1284,6 +1311,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1439,6 +1471,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py index 73fbe700ff31..a7f61914a623 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class RegionInstancesClient(metaclass=RegionInstancesClientMeta): - """The RegionInstances API.""" + """The RegionInstances API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -693,6 +700,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -829,6 +841,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py index a6ab70c1ed8c..1297f1acdd71 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionInstantSnapshotGroupsClient( metaclass=RegionInstantSnapshotGroupsClientMeta ): - """The RegionInstantSnapshotGroups API.""" + """The RegionInstantSnapshotGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -704,6 +711,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -841,6 +853,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1008,6 +1025,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1176,6 +1198,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1309,6 +1336,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1442,6 +1474,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1597,6 +1634,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1835,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1950,6 +1997,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py index 0e056cdef14f..6e72b8844bee 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionInstantSnapshotsClient(metaclass=RegionInstantSnapshotsClientMeta): - """The RegionInstantSnapshots API.""" + """The RegionInstantSnapshots API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -707,6 +714,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -853,6 +865,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1016,6 +1033,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1182,6 +1204,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1313,6 +1340,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1444,6 +1476,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1599,6 +1636,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1835,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1947,6 +1994,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2101,6 +2153,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2281,6 +2338,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py index f539f2428c8a..092a13d163c8 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionNetworkEndpointGroupsClient( metaclass=RegionNetworkEndpointGroupsClientMeta ): - """The RegionNetworkEndpointGroups API.""" + """The RegionNetworkEndpointGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -730,6 +737,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -893,6 +905,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1059,6 +1076,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1200,6 +1222,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1388,6 +1415,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1551,6 +1583,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1739,6 +1776,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1892,6 +1934,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2045,6 +2092,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2200,6 +2252,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2358,6 +2415,11 @@ def sample_list_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py index aaae957ec3de..d2bbe5f99ac8 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionNetworkFirewallPoliciesClient( metaclass=RegionNetworkFirewallPoliciesClientMeta ): - """The RegionNetworkFirewallPolicies API.""" + """The RegionNetworkFirewallPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -726,6 +733,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -883,6 +895,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1058,6 +1075,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1208,6 +1230,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1373,6 +1400,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1513,6 +1545,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1675,6 +1712,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1812,6 +1854,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1972,6 +2019,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2109,6 +2161,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2245,6 +2302,11 @@ def sample_get_effective_firewalls(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2413,6 +2475,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2552,6 +2619,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2686,6 +2758,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2820,6 +2897,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2974,6 +3056,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3130,6 +3217,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3275,6 +3367,364 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 patch_association_unary( + self, + request: Optional[ + Union[compute.PatchAssociationRegionNetworkFirewallPolicyRequest, dict] + ] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + firewall_policy: Optional[str] = None, + firewall_policy_association_resource: Optional[ + compute.FirewallPolicyAssociation + ] = 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 an association for the specified network + firewall 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_v1 + + def sample_patch_association(): + # Create a client + client = compute_v1.RegionNetworkFirewallPoliciesClient() + + # Initialize request argument(s) + request = compute_v1.PatchAssociationRegionNetworkFirewallPolicyRequest( + firewall_policy="firewall_policy_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch_association(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchAssociationRegionNetworkFirewallPolicyRequest, dict]): + The request object. A request message for + RegionNetworkFirewallPolicies.PatchAssociation. + 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 scoping this + request. + + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy (str): + Name of the firewall policy to + update. + + This corresponds to the ``firewall_policy`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): + The body resource for this request + This corresponds to the ``firewall_policy_association_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, + firewall_policy, + firewall_policy_association_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.PatchAssociationRegionNetworkFirewallPolicyRequest + ): + request = compute.PatchAssociationRegionNetworkFirewallPolicyRequest( + 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 firewall_policy is not None: + request.firewall_policy = firewall_policy + if firewall_policy_association_resource is not None: + request.firewall_policy_association_resource = ( + firewall_policy_association_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch_association] + + # 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), + ("firewall_policy", request.firewall_policy), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + + # 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 patch_association( + self, + request: Optional[ + Union[compute.PatchAssociationRegionNetworkFirewallPolicyRequest, dict] + ] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + firewall_policy: Optional[str] = None, + firewall_policy_association_resource: Optional[ + compute.FirewallPolicyAssociation + ] = 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 an association for the specified network + firewall 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_v1 + + def sample_patch_association(): + # Create a client + client = compute_v1.RegionNetworkFirewallPoliciesClient() + + # Initialize request argument(s) + request = compute_v1.PatchAssociationRegionNetworkFirewallPolicyRequest( + firewall_policy="firewall_policy_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch_association(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchAssociationRegionNetworkFirewallPolicyRequest, dict]): + The request object. A request message for + RegionNetworkFirewallPolicies.PatchAssociation. + 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 scoping this + request. + + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy (str): + Name of the firewall policy to + update. + + This corresponds to the ``firewall_policy`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): + The body resource for this request + This corresponds to the ``firewall_policy_association_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, + firewall_policy, + firewall_policy_association_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.PatchAssociationRegionNetworkFirewallPolicyRequest + ): + request = compute.PatchAssociationRegionNetworkFirewallPolicyRequest( + 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 firewall_policy is not None: + request.firewall_policy = firewall_policy + if firewall_policy_association_resource is not None: + request.firewall_policy_association_resource = ( + firewall_policy_association_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch_association] + + # 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), + ("firewall_policy", request.firewall_policy), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3450,6 +3900,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3600,6 +4055,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3767,6 +4227,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3909,6 +4374,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4073,6 +4543,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4212,6 +4687,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4422,6 +4902,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4579,6 +5064,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py index c801b72714cd..dd0ae00465cb 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py @@ -265,6 +265,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.patch_association: gapic_v1.method.wrap_method( + self.patch_association, + default_timeout=600.0, + client_info=client_info, + ), self.patch_rule: gapic_v1.method.wrap_method( self.patch_rule, default_timeout=600.0, @@ -417,6 +422,15 @@ def patch( ]: raise NotImplementedError() + @property + def patch_association( + self, + ) -> Callable[ + [compute.PatchAssociationRegionNetworkFirewallPolicyRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def patch_rule( self, diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py index f324719bf0e3..e6715700f8ff 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py @@ -168,6 +168,14 @@ def post_patch(self, response): logging.log(f"Received response: {response}") return response + def pre_patch_association(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_patch_association(self, response): + logging.log(f"Received response: {response}") + return response + def pre_patch_rule(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -792,6 +800,53 @@ def post_patch_with_metadata( """ return response, metadata + def pre_patch_association( + self, + request: compute.PatchAssociationRegionNetworkFirewallPolicyRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.PatchAssociationRegionNetworkFirewallPolicyRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for patch_association + + Override in a subclass to manipulate the request or metadata + before they are sent to the RegionNetworkFirewallPolicies server. + """ + return request, metadata + + def post_patch_association(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for patch_association + + DEPRECATED. Please use the `post_patch_association_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the RegionNetworkFirewallPolicies server but before + it is returned to user code. This `post_patch_association` interceptor runs + before the `post_patch_association_with_metadata` interceptor. + """ + return response + + def post_patch_association_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_association + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the RegionNetworkFirewallPolicies server but before it is returned to user code. + + We recommend only using this `post_patch_association_with_metadata` + interceptor in new development instead of the `post_patch_association` interceptor. + When both interceptors are used, this `post_patch_association_with_metadata` interceptor runs after the + `post_patch_association` interceptor. The (possibly modified) response returned by + `post_patch_association` will be passed to + `post_patch_association_with_metadata`. + """ + return response, metadata + def pre_patch_rule( self, request: compute.PatchRuleRegionNetworkFirewallPolicyRequest, @@ -3157,6 +3212,184 @@ def __call__( ) return resp + class _PatchAssociation( + _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchAssociation, + RegionNetworkFirewallPoliciesRestStub, + ): + def __hash__(self): + return hash("RegionNetworkFirewallPoliciesRestTransport.PatchAssociation") + + @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.PatchAssociationRegionNetworkFirewallPolicyRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the patch association method over HTTP. + + Args: + request (~.compute.PatchAssociationRegionNetworkFirewallPolicyRequest): + The request object. A request message for + RegionNetworkFirewallPolicies.PatchAssociation. + 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 = _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchAssociation._get_http_options() + request, metadata = self._interceptor.pre_patch_association( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchAssociation, + "_BasePatchAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.RegionNetworkFirewallPoliciesClient.PatchAssociation", + extra={ + "serviceName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies", + "rpcName": "PatchAssociation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RegionNetworkFirewallPoliciesRestTransport._PatchAssociation._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_patch_association(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_patch_association_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_v1.RegionNetworkFirewallPoliciesClient.patch_association", + extra={ + "serviceName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies", + "rpcName": "PatchAssociation", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _PatchRule( _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchRule, RegionNetworkFirewallPoliciesRestStub, @@ -4181,6 +4414,16 @@ def patch( # In C++ this would require a dynamic_cast return self._Patch(self._session, self._host, self._interceptor) # type: ignore + @property + def patch_association( + self, + ) -> Callable[ + [compute.PatchAssociationRegionNetworkFirewallPolicyRequest], 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._PatchAssociation(self._session, self._host, self._interceptor) # type: ignore + @property def patch_rule( self, diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py index 89f72f15c2bc..8a9258e6d72b 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py @@ -287,6 +287,23 @@ def _get_http_options(): ] return http_options + class _BasePatchAssociation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchAssociation", + "body": "firewall_policy_association_resource", + }, + ] + return http_options + class _BasePatchRule: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py index 20c0e65e83c1..023451fd85f6 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionNotificationEndpointsClient( metaclass=RegionNotificationEndpointsClientMeta ): - """The RegionNotificationEndpoints API.""" + """The RegionNotificationEndpoints API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -686,6 +693,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -973,6 +990,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1143,6 +1165,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1278,6 +1305,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1413,6 +1445,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1566,6 +1603,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1734,6 +1776,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py index b866f66f5f35..66dd4f280879 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionOperationsClient(metaclass=RegionOperationsClientMeta): - """The RegionOperations API.""" + """The RegionOperations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -692,6 +699,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -849,6 +861,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -975,6 +992,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1158,6 +1180,11 @@ def sample_wait(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py index b325231a5f8c..e6ebce641b67 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSecurityPoliciesClient(metaclass=RegionSecurityPoliciesClientMeta): - """The RegionSecurityPolicies API.""" + """The RegionSecurityPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -711,6 +718,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -861,6 +873,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1023,6 +1040,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1160,6 +1182,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1323,6 +1350,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1462,6 +1494,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1596,6 +1633,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1730,6 +1772,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1883,6 +1930,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2042,6 +2094,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2190,6 +2247,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2367,6 +2429,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2519,6 +2586,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2681,6 +2753,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2818,6 +2895,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2997,6 +3079,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3151,6 +3238,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py index 985ea12274a6..c987cb4643d9 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class RegionSnapshotSettingsClient(metaclass=RegionSnapshotSettingsClientMeta): - """The RegionSnapshotSettings API.""" + """The RegionSnapshotSettings API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -941,6 +958,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py index 80c59aeee9e5..365720ba5910 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSnapshotsClient(metaclass=RegionSnapshotsClientMeta): - """The RegionSnapshots API.""" + """The RegionSnapshots API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -701,6 +708,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -844,6 +856,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1006,6 +1023,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1172,6 +1194,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1302,6 +1329,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1432,6 +1464,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1583,6 +1620,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1777,6 +1819,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1929,6 +1976,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2081,6 +2133,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2259,6 +2316,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2413,6 +2475,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2567,6 +2634,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py index 4fc275086ba1..5334151a4de9 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSslCertificatesClient(metaclass=RegionSslCertificatesClientMeta): - """The RegionSslCertificates API.""" + """The RegionSslCertificates API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1027,6 +1044,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1162,6 +1184,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1297,6 +1324,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1451,6 +1483,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py index 2c5510db4870..1066e8adce9c 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSslPoliciesClient(metaclass=RegionSslPoliciesClientMeta): - """The RegionSslPolicies API.""" + """The RegionSslPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1005,6 +1022,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1137,6 +1159,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1269,6 +1296,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1420,6 +1452,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1557,6 +1594,11 @@ def sample_list_available_features(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1702,6 +1744,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1847,6 +1894,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py index 4b8ddc4ff4a8..d41e6b940347 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionTargetHttpProxiesClient(metaclass=RegionTargetHttpProxiesClientMeta): - """The RegionTargetHttpProxies API.""" + """The RegionTargetHttpProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -700,6 +707,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1019,6 +1036,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1154,6 +1176,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1289,6 +1316,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1445,6 +1477,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1606,6 +1643,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1756,6 +1798,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py index 3149b1dcafeb..7cce0b78f52a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionTargetHttpsProxiesClient(metaclass=RegionTargetHttpsProxiesClientMeta): - """The RegionTargetHttpsProxies API.""" + """The RegionTargetHttpsProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -700,6 +707,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1019,6 +1036,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1154,6 +1176,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1289,6 +1316,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1445,6 +1477,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1607,6 +1644,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1758,6 +1800,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1940,6 +1987,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2097,6 +2149,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2272,6 +2329,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2422,6 +2484,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py index 8a482e3b992f..0552e866d13f 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionTargetTcpProxiesClient(metaclass=RegionTargetTcpProxiesClientMeta): - """The RegionTargetTcpProxies API.""" + """The RegionTargetTcpProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -698,6 +705,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1002,6 +1019,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1137,6 +1159,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1272,6 +1299,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1427,6 +1459,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py index 97c14fbdafcc..898a2f4668d0 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionUrlMapsClient(metaclass=RegionUrlMapsClientMeta): - """The RegionUrlMaps API.""" + """The RegionUrlMaps API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -691,6 +698,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -826,6 +838,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1021,6 +1038,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1153,6 +1175,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1285,6 +1312,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1438,6 +1470,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1593,6 +1630,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1737,6 +1779,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1906,6 +1953,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2050,6 +2102,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2227,6 +2284,11 @@ def sample_validate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py index 82b9373c99b7..a380339a398a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionZonesClient(metaclass=RegionZonesClientMeta): - """The RegionZones API.""" + """The RegionZones API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py index f90f4da07a7d..429a5234a814 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionsClient(metaclass=RegionsClientMeta): - """The Regions API.""" + """The Regions API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -697,6 +704,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -826,6 +838,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py index 793e9119bd09..79251754cebe 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class ReliabilityRisksClient(metaclass=ReliabilityRisksClientMeta): - """The ReliabilityRisks API.""" + """The ReliabilityRisks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -791,6 +803,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py index 116f9c102c6a..c1b8b8ad4f8a 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationBlocksClient(metaclass=ReservationBlocksClientMeta): - """The ReservationBlocks API.""" + """The ReservationBlocks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -709,6 +716,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -887,6 +899,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1028,6 +1045,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1209,6 +1231,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1379,6 +1406,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1600,6 +1632,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1766,6 +1803,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py index ca98d6dcb2a7..6485b48e36f7 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationSlotsClient(metaclass=ReservationSlotsClientMeta): - """The ReservationSlots API.""" + """The ReservationSlots API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -707,6 +714,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -856,6 +868,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1005,6 +1022,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1198,6 +1220,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1366,6 +1393,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1532,6 +1564,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1700,6 +1737,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1857,6 +1899,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py index 28bd32800f22..3bbfe8cafa60 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationSubBlocksClient(metaclass=ReservationSubBlocksClientMeta): - """The ReservationSubBlocks API.""" + """The ReservationSubBlocks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -709,6 +716,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -887,6 +899,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1057,6 +1074,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1227,6 +1249,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1393,6 +1420,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1558,6 +1590,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1712,6 +1749,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1906,6 +1948,11 @@ def sample_report_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2075,6 +2122,11 @@ def sample_report_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2296,6 +2348,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2464,6 +2521,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py index caf407ed5f30..57cca9bc38cf 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationsClient(metaclass=ReservationsClientMeta): - """The Reservations API.""" + """The Reservations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -672,6 +679,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -814,6 +826,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1106,6 +1128,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1270,6 +1297,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1400,6 +1432,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1530,6 +1567,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1679,6 +1721,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1845,6 +1892,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2000,6 +2052,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2175,6 +2232,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2325,6 +2387,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2524,6 +2591,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2672,6 +2744,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2811,6 +2888,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2950,6 +3032,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py index 9cab9116e9bd..4a206fcfe58f 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ResourcePoliciesClient(metaclass=ResourcePoliciesClientMeta): - """The ResourcePolicies API.""" + """The ResourcePolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1115,6 +1137,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1281,6 +1308,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1410,6 +1442,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1539,6 +1576,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1689,6 +1731,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1839,6 +1886,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1978,6 +2030,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2186,6 +2243,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2339,6 +2401,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py index e02c6af3d2dd..b6cc9b58fc24 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RolloutPlansClient(metaclass=RolloutPlansClientMeta): - """The RolloutPlans API.""" + """The RolloutPlans API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -802,6 +814,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -956,6 +973,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1072,6 +1094,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1188,6 +1215,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1323,6 +1355,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py index f5d4111dabdd..fe9b67facba4 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RolloutsClient(metaclass=RolloutsClientMeta): - """The Rollouts API.""" + """The Rollouts API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_advance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -808,6 +820,11 @@ def sample_advance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -955,6 +972,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1078,6 +1100,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1225,6 +1252,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1348,6 +1380,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1499,6 +1536,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1607,6 +1649,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1742,6 +1789,11 @@ def sample_pause(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1866,6 +1918,11 @@ def sample_pause(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2015,6 +2072,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2140,6 +2202,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py index 439e68cbaeda..c6bb3f704320 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RoutersClient(metaclass=RoutersClientMeta): - """The Routers API.""" + """The Routers API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -813,6 +825,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_delete_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1236,6 +1263,11 @@ def sample_delete_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1394,6 +1426,11 @@ def sample_delete_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1527,6 +1564,11 @@ def sample_delete_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1686,6 +1728,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1818,6 +1865,11 @@ def sample_get_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1950,6 +2002,11 @@ def sample_get_nat_ip_info(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2089,6 +2146,11 @@ def sample_get_nat_mapping_info(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2232,6 +2294,11 @@ def sample_get_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2362,6 +2429,11 @@ def sample_get_router_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2491,6 +2563,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2620,6 +2697,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2770,6 +2852,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2917,6 +3004,11 @@ def sample_list_bgp_routes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3064,6 +3156,11 @@ def sample_list_named_sets(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3211,6 +3308,11 @@ def sample_list_route_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3363,6 +3465,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3504,6 +3611,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3670,6 +3782,11 @@ def sample_patch_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3811,6 +3928,11 @@ def sample_patch_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3977,6 +4099,11 @@ def sample_patch_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4118,6 +4245,11 @@ def sample_patch_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4282,6 +4414,11 @@ def sample_preview(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4427,6 +4564,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4572,6 +4714,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4738,6 +4885,11 @@ def sample_update_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4879,6 +5031,11 @@ def sample_update_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5045,6 +5202,11 @@ def sample_update_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5186,6 +5348,11 @@ def sample_update_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py index 61580e828b75..b889754fed3e 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RoutesClient(metaclass=RoutesClientMeta): - """The Routes API.""" + """The Routes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -796,6 +808,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -946,6 +963,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1061,6 +1083,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1176,6 +1203,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1311,6 +1343,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1456,6 +1493,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py index 574d06f77bd8..56cea31e6771 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SecurityPoliciesClient(metaclass=SecurityPoliciesClientMeta): - """The SecurityPolicies API.""" + """The SecurityPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -690,6 +697,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -821,6 +833,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -962,6 +979,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1096,6 +1118,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1219,6 +1246,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1369,6 +1401,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1494,6 +1531,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1652,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1726,6 +1773,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1860,6 +1912,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1985,6 +2042,11 @@ def sample_list_preconfigured_expression_sets(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2121,6 +2183,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2257,6 +2324,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2414,6 +2486,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2547,6 +2624,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2694,6 +2776,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2817,6 +2904,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2978,6 +3070,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3115,6 +3212,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py index 0dea6251a573..5e3e55665b18 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ServiceAttachmentsClient(metaclass=ServiceAttachmentsClientMeta): - """The ServiceAttachments API.""" + """The ServiceAttachments API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1125,6 +1147,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1291,6 +1318,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1422,6 +1454,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1553,6 +1590,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1702,6 +1744,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1866,6 +1913,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2019,6 +2071,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2227,6 +2284,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2380,6 +2442,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py index e7bbb261d1f3..3ca4fed9cd30 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class SnapshotSettingsServiceClient(metaclass=SnapshotSettingsServiceClientMeta): - """The SnapshotSettings API.""" + """The SnapshotSettings API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -667,6 +674,11 @@ def sample_get(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -782,6 +794,11 @@ def sample_patch(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -897,6 +914,11 @@ def sample_patch(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py index cab000d12b1c..b28176bfa270 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SnapshotsClient(metaclass=SnapshotsClientMeta): - """The Snapshots API.""" + """The Snapshots API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -687,6 +694,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -968,6 +985,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1120,6 +1142,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1362,6 +1394,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1497,6 +1534,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1672,6 +1714,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1808,6 +1855,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1944,6 +1996,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2104,6 +2161,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2241,6 +2303,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2378,6 +2445,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py index c99c44721314..3999b5e9ac75 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SslCertificatesClient(metaclass=SslCertificatesClientMeta): - """The SslCertificates API.""" + """The SslCertificates API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -809,6 +821,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -932,6 +949,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1107,6 +1129,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1223,6 +1250,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1339,6 +1371,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1475,6 +1512,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py index 337cf2083dd4..a400a3d83a9e 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SslPoliciesClient(metaclass=SslPoliciesClientMeta): - """The SslPolicies API.""" + """The SslPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -671,6 +678,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -808,6 +820,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -934,6 +951,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1089,6 +1111,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1204,6 +1231,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1319,6 +1351,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1453,6 +1490,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1572,6 +1614,11 @@ def sample_list_available_features(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1705,6 +1752,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1838,6 +1890,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py index fe4b2480aa7f..6bdbe9718bbc 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class StoragePoolTypesClient(metaclass=StoragePoolTypesClientMeta): - """The StoragePoolTypes API.""" + """The StoragePoolTypes API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -814,6 +826,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -942,6 +959,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py index a7a0cd314070..db8f586301f3 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class StoragePoolsClient(metaclass=StoragePoolsClientMeta): - """The StoragePools API.""" + """The StoragePools API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -955,6 +972,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1114,6 +1136,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1278,6 +1305,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1410,6 +1442,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1542,6 +1579,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1695,6 +1737,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1843,6 +1890,11 @@ def sample_list_disks(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2028,6 +2080,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2176,6 +2233,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2323,6 +2385,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2470,6 +2537,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py index d69c4c531a86..c58d2cff7d61 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SubnetworksClient(metaclass=SubnetworksClientMeta): - """The Subnetworks API.""" + """The Subnetworks API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -814,6 +826,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -949,6 +966,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1129,6 +1151,11 @@ def sample_expand_ip_cidr_range(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1284,6 +1311,11 @@ def sample_expand_ip_cidr_range(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1450,6 +1482,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1614,6 +1651,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1746,6 +1788,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1878,6 +1925,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2031,6 +2083,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2152,6 +2209,11 @@ def sample_list_usable(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2311,6 +2373,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2459,6 +2526,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2665,6 +2737,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2821,6 +2898,11 @@ def sample_set_private_ip_google_access(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2977,6 +3059,11 @@ def sample_set_private_ip_google_access(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3155,6 +3242,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py index 3c9a78478bf6..fa0fd578fd31 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetGrpcProxiesClient(metaclass=TargetGrpcProxiesClientMeta): - """The TargetGrpcProxies API.""" + """The TargetGrpcProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -685,6 +692,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -809,6 +821,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -964,6 +981,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1081,6 +1103,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1198,6 +1225,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1332,6 +1364,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1477,6 +1514,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1611,6 +1653,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py index f54752bd416a..8c32f7a1436c 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetHttpProxiesClient(metaclass=TargetHttpProxiesClientMeta): - """The TargetHttpProxies API.""" + """The TargetHttpProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -935,6 +952,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1219,6 +1246,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1335,6 +1367,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1471,6 +1508,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1616,6 +1658,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1797,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1905,6 +1957,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2036,6 +2093,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py index 1fcaec9f4f1e..052272f31516 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetHttpsProxiesClient(metaclass=TargetHttpsProxiesClientMeta): - """The TargetHttpsProxies API.""" + """The TargetHttpsProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -935,6 +952,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1219,6 +1246,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1335,6 +1367,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1471,6 +1508,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1616,6 +1658,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1797,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1917,6 +1969,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2060,6 +2117,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2226,6 +2288,11 @@ def sample_set_quic_override(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2368,6 +2435,11 @@ def sample_set_quic_override(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2533,6 +2605,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2674,6 +2751,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2837,6 +2919,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2976,6 +3063,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3131,6 +3223,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3262,6 +3359,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py index d27f3864a700..4969840cbe83 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetInstancesClient(metaclass=TargetInstancesClientMeta): - """The TargetInstances API.""" + """The TargetInstances API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -672,6 +679,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1121,6 +1143,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1253,6 +1280,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1385,6 +1417,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1538,6 +1575,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1706,6 +1748,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1863,6 +1910,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2036,6 +2088,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py index 08937292fff9..3edd6d7f7869 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetPoolsClient(metaclass=TargetPoolsClientMeta): - """The TargetPools API.""" + """The TargetPools API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -708,6 +715,11 @@ def sample_add_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -860,6 +872,11 @@ def sample_add_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1037,6 +1054,11 @@ def sample_add_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1189,6 +1211,11 @@ def sample_add_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1326,6 +1353,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1472,6 +1504,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1607,6 +1644,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1774,6 +1816,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1917,6 +1964,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2049,6 +2101,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2181,6 +2238,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2334,6 +2396,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2497,6 +2564,11 @@ def sample_remove_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2649,6 +2721,11 @@ def sample_remove_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2826,6 +2903,11 @@ def sample_remove_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2978,6 +3060,11 @@ def sample_remove_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3146,6 +3233,11 @@ def sample_set_backup(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3289,6 +3381,11 @@ def sample_set_backup(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3471,6 +3568,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3628,6 +3730,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3806,6 +3913,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py index 20f7836c325c..7a61c376de04 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetSslProxiesClient(metaclass=TargetSslProxiesClientMeta): - """The TargetSslProxies API.""" + """The TargetSslProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -805,6 +817,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1075,6 +1097,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1191,6 +1218,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1327,6 +1359,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1480,6 +1517,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1622,6 +1664,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1789,6 +1836,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1932,6 +1984,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2097,6 +2154,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2238,6 +2300,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2404,6 +2471,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2546,6 +2618,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2709,6 +2786,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2848,6 +2930,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3008,6 +3095,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py index 144dad6a3051..07e0ff4dfe39 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetTcpProxiesClient(metaclass=TargetTcpProxiesClientMeta): - """The TargetTcpProxies API.""" + """The TargetTcpProxies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -933,6 +950,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1087,6 +1109,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1203,6 +1230,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1319,6 +1351,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1455,6 +1492,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1608,6 +1650,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1797,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1915,6 +1967,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2056,6 +2113,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2216,6 +2278,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py index c6668d0a6bcc..8989b30838f5 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetVpnGatewaysClient(metaclass=TargetVpnGatewaysClientMeta): - """The TargetVpnGateways API.""" + """The TargetVpnGateways API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1114,6 +1136,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1244,6 +1271,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1374,6 +1406,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1525,6 +1562,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1687,6 +1729,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1838,6 +1885,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py index 07c1252ece3f..ea04bf3e398f 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class UrlMapsClient(metaclass=UrlMapsClientMeta): - """The UrlMaps API.""" + """The UrlMaps API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -671,6 +678,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -804,6 +816,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -926,6 +943,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1107,6 +1129,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1222,6 +1249,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1337,6 +1369,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1500,6 +1537,11 @@ def sample_invalidate_cache(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1639,6 +1681,11 @@ def sample_invalidate_cache(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1774,6 +1821,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1916,6 +1968,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2047,6 +2104,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2205,6 +2267,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2336,6 +2403,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2467,6 +2539,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2626,6 +2703,11 @@ def sample_validate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py index 3d39da212247..1fc9eca6cc79 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class VpnGatewaysClient(metaclass=VpnGatewaysClientMeta): - """The VpnGateways API.""" + """The VpnGateways API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -941,6 +958,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1105,6 +1127,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1234,6 +1261,11 @@ def sample_get_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1364,6 +1396,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1494,6 +1531,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1645,6 +1687,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1807,6 +1854,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1958,6 +2010,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2136,6 +2193,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py index ceb716bcfb85..b9c00b432b16 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class VpnTunnelsClient(metaclass=VpnTunnelsClientMeta): - """The VpnTunnels API.""" + """The VpnTunnels API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1104,6 +1126,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1234,6 +1261,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1364,6 +1396,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1515,6 +1552,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1677,6 +1719,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1828,6 +1875,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py index c86b495f6d0b..2b45ea3a2559 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class WireGroupsClient(metaclass=WireGroupsClientMeta): - """The WireGroups API.""" + """The WireGroups API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -689,6 +696,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -822,6 +834,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -979,6 +996,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1110,6 +1132,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1391,6 +1423,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1551,6 +1588,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1700,6 +1742,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py index cc2c021bd344..89577ca26799 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class ZoneOperationsClient(metaclass=ZoneOperationsClientMeta): - """The ZoneOperations API.""" + """The ZoneOperations API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -689,6 +696,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -846,6 +858,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -972,6 +989,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1155,6 +1177,11 @@ def sample_wait(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py index 2ab732a6b70c..b2eb4a492c86 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ZoneVmExtensionPoliciesClient(metaclass=ZoneVmExtensionPoliciesClientMeta): - """The ZoneVmExtensionPolicies API.""" + """The ZoneVmExtensionPolicies API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -992,6 +1009,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1124,6 +1146,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1256,6 +1283,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1407,6 +1439,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1567,6 +1604,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1716,6 +1758,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py b/packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py index 104311f5a603..874e66a70892 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class ZonesClient(metaclass=ZonesClientMeta): - """The Zones API.""" + """The Zones API. This class implements API version 2026-09-01.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -789,6 +801,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-09-01"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py b/packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py index 7e744dbe7af6..81204b6700ec 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py @@ -237,6 +237,7 @@ CapacityHistoryAdviceRequest, CapacityHistoryRequest, CapacityHistoryRequestInstanceProperties, + CapacityHistoryRequestInstancePropertiesAttachedDisk, CapacityHistoryRequestInstancePropertiesScheduling, CapacityHistoryRequestLocationPolicy, CapacityHistoryResponse, @@ -511,6 +512,7 @@ GetFutureReservationRequest, GetGlobalAddressRequest, GetGlobalForwardingRuleRequest, + GetGlobalFrontendSettingRequest, GetGlobalNetworkEndpointGroupRequest, GetGlobalOperationRequest, GetGlobalOrganizationOperationRequest, @@ -562,6 +564,7 @@ GetIamPolicySubnetworkRequest, GetImageFamilyViewRequest, GetImageRequest, + GetImageViewRequest, GetInstanceGroupManagerRequest, GetInstanceGroupManagerResizeRequestRequest, GetInstanceGroupRequest, @@ -581,6 +584,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetManagedRulesetRequest, GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, @@ -688,6 +692,8 @@ GetZoneRequest, GetZoneVmExtensionPolicyRequest, GlobalAddressesMoveRequest, + GlobalFrontendSettings, + GlobalFrontendSettingsPatchResponse, GlobalNetworkEndpointGroupsAttachEndpointsRequest, GlobalNetworkEndpointGroupsDetachEndpointsRequest, GlobalOrganizationSetPolicyRequest, @@ -761,6 +767,8 @@ ImageFamilyView, ImageList, ImageParams, + ImageView, + ImageViewsListResponse, InitialStateConfig, InsertAddressRequest, InsertAutoscalerRequest, @@ -1036,6 +1044,7 @@ InterconnectRemoteLocationPermittedConnections, InterconnectsGetDiagnosticsResponse, InterconnectsGetMacsecConfigResponse, + InterconnectsSetNameRequest, Interval, InvalidateCacheUrlMapRequest, Items, @@ -1077,6 +1086,7 @@ ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -1098,6 +1108,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListManagedRulesetsRequest, ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, @@ -1214,6 +1225,8 @@ ManagedInstanceScheduling, ManagedInstanceShutdownDetails, ManagedInstanceVersion, + ManagedRuleset, + ManagedRulesetList, Metadata, MetadataFilter, MetadataFilterLabelMatch, @@ -1319,6 +1332,7 @@ PacketMirroringMirroredResourceInfoSubnetInfo, PacketMirroringNetworkInfo, PacketMirroringsScopedList, + PatchAssociationRegionNetworkFirewallPolicyRequest, PatchAutoscalerRequest, PatchBackendBucketRequest, PatchBackendServiceRequest, @@ -1327,6 +1341,7 @@ PatchFirewallRequest, PatchForwardingRuleRequest, PatchGlobalForwardingRuleRequest, + PatchGlobalFrontendSettingRequest, PatchGlobalPublicDelegatedPrefixeRequest, PatchHealthCheckRequest, PatchImageRequest, @@ -1751,6 +1766,7 @@ SetNamedPortsInstanceGroupRequest, SetNamedPortsRegionInstanceGroupRequest, SetNameInstanceRequest, + SetNameInterconnectRequest, SetNodeTemplateNodeGroupRequest, SetPrivateIpGoogleAccessSubnetworkRequest, SetProxyHeaderTargetSslProxyRequest, @@ -2311,6 +2327,7 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", @@ -2585,6 +2602,7 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", @@ -2636,6 +2654,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -2655,6 +2674,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -2762,6 +2782,8 @@ "GetZoneRequest", "GetZoneVmExtensionPolicyRequest", "GlobalAddressesMoveRequest", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", "GlobalOrganizationSetPolicyRequest", @@ -2835,6 +2857,8 @@ "ImageFamilyView", "ImageList", "ImageParams", + "ImageView", + "ImageViewsListResponse", "InitialStateConfig", "InsertAddressRequest", "InsertAutoscalerRequest", @@ -3110,6 +3134,7 @@ "InterconnectRemoteLocationPermittedConnections", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -3151,6 +3176,7 @@ "ListHealthChecksRequest", "ListHostsRequest", "ListImagesRequest", + "ListImageViewsRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", "ListInstanceGroupsRequest", @@ -3172,6 +3198,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -3288,6 +3315,8 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -3393,6 +3422,7 @@ "PacketMirroringMirroredResourceInfoSubnetInfo", "PacketMirroringNetworkInfo", "PacketMirroringsScopedList", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -3401,6 +3431,7 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", "PatchHealthCheckRequest", "PatchImageRequest", @@ -3825,6 +3856,7 @@ "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNodeTemplateNodeGroupRequest", "SetPrivateIpGoogleAccessSubnetworkRequest", "SetProxyHeaderTargetSslProxyRequest", diff --git a/packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py b/packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py index 053b37f4b9c4..11eeadd3a5bf 100644 --- a/packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py +++ b/packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py @@ -246,6 +246,7 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", @@ -522,6 +523,7 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", @@ -573,6 +575,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -592,6 +595,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -699,6 +703,8 @@ "GetZoneRequest", "GetZoneVmExtensionPolicyRequest", "GlobalAddressesMoveRequest", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", "GlobalOrganizationSetPolicyRequest", @@ -770,6 +776,8 @@ "ImageFamilyView", "ImageList", "ImageParams", + "ImageView", + "ImageViewsListResponse", "InitialStateConfig", "InsertAddressRequest", "InsertAutoscalerRequest", @@ -1045,6 +1053,7 @@ "InterconnectRemoteLocationPermittedConnections", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -1085,6 +1094,7 @@ "ListGlobalVmExtensionPoliciesRequest", "ListHealthChecksRequest", "ListHostsRequest", + "ListImageViewsRequest", "ListImagesRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", @@ -1107,6 +1117,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -1223,6 +1234,8 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -1328,6 +1341,7 @@ "PacketMirroringMirroredResourceInfoSubnetInfo", "PacketMirroringNetworkInfo", "PacketMirroringsScopedList", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -1336,6 +1350,7 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", "PatchHealthCheckRequest", "PatchImageRequest", @@ -1759,6 +1774,7 @@ "SetMetadataInstanceRequest", "SetMinCpuPlatformInstanceRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNodeTemplateNodeGroupRequest", @@ -3272,6 +3288,12 @@ class AddAssociationRegionNetworkFirewallPolicyRequest(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + associated_policy_to_be_replaced (str): + Name of the firewall policy associated with the target + network to swap association with. This field is mutually + exclusive with 'replace_existing_association'. + + This field is a member of `oneof`_ ``_associated_policy_to_be_replaced``. firewall_policy (str): Name of the firewall policy to update. firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): @@ -3311,6 +3333,11 @@ class AddAssociationRegionNetworkFirewallPolicyRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ + associated_policy_to_be_replaced: str = proto.Field( + proto.STRING, + number=240901404, + optional=True, + ) firewall_policy: str = proto.Field( proto.STRING, number=498173265, @@ -5508,17 +5535,6 @@ class AggregatedListAcceleratorTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -5556,11 +5572,6 @@ class AggregatedListAcceleratorTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -5694,17 +5705,6 @@ class AggregatedListAddressesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -5742,11 +5742,6 @@ class AggregatedListAddressesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -5880,17 +5875,6 @@ class AggregatedListAutoscalersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -5928,11 +5912,6 @@ class AggregatedListAutoscalersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6066,17 +6045,6 @@ class AggregatedListBackendBucketsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6114,11 +6082,6 @@ class AggregatedListBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6252,17 +6215,6 @@ class AggregatedListBackendServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6300,11 +6252,6 @@ class AggregatedListBackendServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6438,17 +6385,6 @@ class AggregatedListDiskTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6486,11 +6422,6 @@ class AggregatedListDiskTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6624,17 +6555,6 @@ class AggregatedListDisksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6672,11 +6592,6 @@ class AggregatedListDisksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6810,17 +6725,6 @@ class AggregatedListForwardingRulesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6858,11 +6762,6 @@ class AggregatedListForwardingRulesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6996,17 +6895,6 @@ class AggregatedListFutureReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7044,11 +6932,6 @@ class AggregatedListFutureReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7182,17 +7065,6 @@ class AggregatedListGlobalOperationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7230,11 +7102,6 @@ class AggregatedListGlobalOperationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7369,17 +7236,6 @@ class AggregatedListGlobalVmExtensionPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7417,11 +7273,6 @@ class AggregatedListGlobalVmExtensionPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7555,17 +7406,6 @@ class AggregatedListHealthChecksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7603,11 +7443,6 @@ class AggregatedListHealthChecksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7741,17 +7576,6 @@ class AggregatedListInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7789,11 +7613,6 @@ class AggregatedListInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7927,17 +7746,6 @@ class AggregatedListInstanceGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7975,11 +7783,6 @@ class AggregatedListInstanceGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8113,17 +7916,6 @@ class AggregatedListInstanceTemplatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8161,11 +7953,6 @@ class AggregatedListInstanceTemplatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8299,17 +8086,6 @@ class AggregatedListInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8347,11 +8123,6 @@ class AggregatedListInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8485,17 +8256,6 @@ class AggregatedListInstantSnapshotsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8533,11 +8293,6 @@ class AggregatedListInstantSnapshotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8671,17 +8426,176 @@ class AggregatedListInterconnectAttachmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. + service_project_number (int): + The Shared VPC service project id or service + project number for which aggregated list request + is invoked for subnetworks list-usable api. - 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`_ ``_service_project_number``. + """ - This field is a member of `oneof`_ ``_return_partial_success``. + filter: str = proto.Field( + proto.STRING, + number=336120696, + optional=True, + ) + include_all_scopes: bool = proto.Field( + proto.BOOL, + number=391327988, + optional=True, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, + optional=True, + ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, + optional=True, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + service_project_number: int = proto.Field( + proto.INT64, + number=316757497, + optional=True, + ) + + +class AggregatedListMachineTypesRequest(proto.Message): + r"""A request message for MachineTypes.AggregatedList. See the + method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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``. + include_all_scopes (bool): + Indicates whether every visible scope for + each scope type (zone, region, global) should be + included in the response. For new resource types + added after this field, the flag has no effect + as new resource types will always include every + visible scope for each scope type in response. + For resource types which predate this field, if + this flag is omitted or false, only scopes of + the scope types where the resource type is + expected to be found will be included. + + This field is a member of `oneof`_ ``_include_all_scopes``. + max_results (int): + The maximum number of results per page that should be + returned. If the number of available results is larger than + ``maxResults``, Compute Engine returns a ``nextPageToken`` + that can be used to get the next page of results in + subsequent list requests. Acceptable values are ``0`` to + ``500``, inclusive. (Default: ``500``) + + This field is a member of `oneof`_ ``_max_results``. + order_by (str): + Sorts list results by a certain order. By default, results + are returned in alphanumerical order based on the resource + name. + + You can also sort results in descending order based on the + creation timestamp using + ``orderBy="creationTimestamp desc"``. This sorts results + based on the ``creationTimestamp`` field in reverse + chronological order (newest result first). Use this to sort + resources like operations so that the newest operation is + returned first. + + Currently, only sorting by ``name`` or + ``creationTimestamp desc`` is supported. + + This field is a member of `oneof`_ ``_order_by``. + page_token (str): + Specifies a page token to use. Set ``pageToken`` to the + ``nextPageToken`` returned by a previous list request to get + the next page of results. + + This field is a member of `oneof`_ ``_page_token``. + project (str): + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8719,11 +8633,6 @@ class AggregatedListInterconnectAttachmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8731,9 +8640,9 @@ class AggregatedListInterconnectAttachmentsRequest(proto.Message): ) -class AggregatedListMachineTypesRequest(proto.Message): - r"""A request message for MachineTypes.AggregatedList. See the - method description for details. +class AggregatedListNetworkAttachmentsRequest(proto.Message): + r"""A request message for NetworkAttachments.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -8857,17 +8766,6 @@ class AggregatedListMachineTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8905,11 +8803,6 @@ class AggregatedListMachineTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8917,9 +8810,10 @@ class AggregatedListMachineTypesRequest(proto.Message): ) -class AggregatedListNetworkAttachmentsRequest(proto.Message): - r"""A request message for NetworkAttachments.AggregatedList. See - the method description for details. +class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): + r"""A request message for + NetworkEdgeSecurityServices.AggregatedList. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9042,18 +8936,7 @@ class AggregatedListNetworkAttachmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9091,11 +8974,6 @@ class AggregatedListNetworkAttachmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9103,10 +8981,9 @@ class AggregatedListNetworkAttachmentsRequest(proto.Message): ) -class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): - r"""A request message for - NetworkEdgeSecurityServices.AggregatedList. See the method - description for details. +class AggregatedListNetworkEndpointGroupsRequest(proto.Message): + r"""A request message for NetworkEndpointGroups.AggregatedList. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9229,18 +9106,7 @@ class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9278,11 +9144,6 @@ class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9290,8 +9151,8 @@ class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): ) -class AggregatedListNetworkEndpointGroupsRequest(proto.Message): - r"""A request message for NetworkEndpointGroups.AggregatedList. +class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): + r"""A request message for NetworkFirewallPolicies.AggregatedList. See the method description for details. @@ -9416,17 +9277,6 @@ class AggregatedListNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9464,11 +9314,6 @@ class AggregatedListNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9476,9 +9321,9 @@ class AggregatedListNetworkEndpointGroupsRequest(proto.Message): ) -class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): - r"""A request message for NetworkFirewallPolicies.AggregatedList. - See the method description for details. +class AggregatedListNodeGroupsRequest(proto.Message): + r"""A request message for NodeGroups.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9602,17 +9447,6 @@ class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9650,11 +9484,6 @@ class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9662,8 +9491,8 @@ class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): ) -class AggregatedListNodeGroupsRequest(proto.Message): - r"""A request message for NodeGroups.AggregatedList. See the +class AggregatedListNodeTemplatesRequest(proto.Message): + r"""A request message for NodeTemplates.AggregatedList. See the method description for details. @@ -9788,17 +9617,6 @@ class AggregatedListNodeGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9836,11 +9654,6 @@ class AggregatedListNodeGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9848,8 +9661,8 @@ class AggregatedListNodeGroupsRequest(proto.Message): ) -class AggregatedListNodeTemplatesRequest(proto.Message): - r"""A request message for NodeTemplates.AggregatedList. See the +class AggregatedListNodeTypesRequest(proto.Message): + r"""A request message for NodeTypes.AggregatedList. See the method description for details. @@ -9974,17 +9787,6 @@ class AggregatedListNodeTemplatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10022,11 +9824,6 @@ class AggregatedListNodeTemplatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10034,9 +9831,9 @@ class AggregatedListNodeTemplatesRequest(proto.Message): ) -class AggregatedListNodeTypesRequest(proto.Message): - r"""A request message for NodeTypes.AggregatedList. See the - method description for details. +class AggregatedListPacketMirroringsRequest(proto.Message): + r"""A request message for PacketMirrorings.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10160,17 +9957,6 @@ class AggregatedListNodeTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10208,11 +9994,6 @@ class AggregatedListNodeTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10220,9 +10001,9 @@ class AggregatedListNodeTypesRequest(proto.Message): ) -class AggregatedListPacketMirroringsRequest(proto.Message): - r"""A request message for PacketMirrorings.AggregatedList. See - the method description for details. +class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): + r"""A request message for PublicDelegatedPrefixes.AggregatedList. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10345,18 +10126,7 @@ class AggregatedListPacketMirroringsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10394,11 +10164,6 @@ class AggregatedListPacketMirroringsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10406,9 +10171,9 @@ class AggregatedListPacketMirroringsRequest(proto.Message): ) -class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): - r"""A request message for PublicDelegatedPrefixes.AggregatedList. - See the method description for details. +class AggregatedListRegionCommitmentsRequest(proto.Message): + r"""A request message for RegionCommitments.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10531,18 +10296,7 @@ class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10580,11 +10334,6 @@ class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10592,9 +10341,10 @@ class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): ) -class AggregatedListRegionCommitmentsRequest(proto.Message): - r"""A request message for RegionCommitments.AggregatedList. See - the method description for details. +class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): + r"""A request message for + RegionCompositeHealthChecks.AggregatedList. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10717,18 +10467,7 @@ class AggregatedListRegionCommitmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10766,11 +10505,6 @@ class AggregatedListRegionCommitmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10778,9 +10512,9 @@ class AggregatedListRegionCommitmentsRequest(proto.Message): ) -class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): +class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): r"""A request message for - RegionCompositeHealthChecks.AggregatedList. See the method + RegionHealthAggregationPolicies.AggregatedList. See the method description for details. @@ -10905,17 +10639,6 @@ class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10953,11 +10676,6 @@ class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10965,9 +10683,9 @@ class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): ) -class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): +class AggregatedListRegionHealthCheckServicesRequest(proto.Message): r"""A request message for - RegionHealthAggregationPolicies.AggregatedList. See the method + RegionHealthCheckServices.AggregatedList. See the method description for details. @@ -11092,17 +10810,6 @@ class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11140,11 +10847,6 @@ class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11152,10 +10854,9 @@ class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): ) -class AggregatedListRegionHealthCheckServicesRequest(proto.Message): - r"""A request message for - RegionHealthCheckServices.AggregatedList. See the method - description for details. +class AggregatedListRegionHealthSourcesRequest(proto.Message): + r"""A request message for RegionHealthSources.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -11279,17 +10980,6 @@ class AggregatedListRegionHealthCheckServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11327,11 +11017,6 @@ class AggregatedListRegionHealthCheckServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11339,9 +11024,10 @@ class AggregatedListRegionHealthCheckServicesRequest(proto.Message): ) -class AggregatedListRegionHealthSourcesRequest(proto.Message): - r"""A request message for RegionHealthSources.AggregatedList. See - the method description for details. +class AggregatedListRegionNotificationEndpointsRequest(proto.Message): + r"""A request message for + RegionNotificationEndpoints.AggregatedList. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -11465,17 +11151,6 @@ class AggregatedListRegionHealthSourcesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11513,11 +11188,6 @@ class AggregatedListRegionHealthSourcesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11525,10 +11195,9 @@ class AggregatedListRegionHealthSourcesRequest(proto.Message): ) -class AggregatedListRegionNotificationEndpointsRequest(proto.Message): - r"""A request message for - RegionNotificationEndpoints.AggregatedList. See the method - description for details. +class AggregatedListReservationsRequest(proto.Message): + r"""A request message for Reservations.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -11651,18 +11320,7 @@ class AggregatedListRegionNotificationEndpointsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11700,11 +11358,6 @@ class AggregatedListRegionNotificationEndpointsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11712,9 +11365,9 @@ class AggregatedListRegionNotificationEndpointsRequest(proto.Message): ) -class AggregatedListReservationsRequest(proto.Message): - r"""A request message for Reservations.AggregatedList. See the - method description for details. +class AggregatedListResourcePoliciesRequest(proto.Message): + r"""A request message for ResourcePolicies.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -11838,17 +11491,6 @@ class AggregatedListReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11886,11 +11528,6 @@ class AggregatedListReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11898,9 +11535,9 @@ class AggregatedListReservationsRequest(proto.Message): ) -class AggregatedListResourcePoliciesRequest(proto.Message): - r"""A request message for ResourcePolicies.AggregatedList. See - the method description for details. +class AggregatedListRoutersRequest(proto.Message): + r"""A request message for Routers.AggregatedList. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -12024,17 +11661,6 @@ class AggregatedListResourcePoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12072,11 +11698,6 @@ class AggregatedListResourcePoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12084,9 +11705,9 @@ class AggregatedListResourcePoliciesRequest(proto.Message): ) -class AggregatedListRoutersRequest(proto.Message): - r"""A request message for Routers.AggregatedList. See the method - description for details. +class AggregatedListSecurityPoliciesRequest(proto.Message): + r"""A request message for SecurityPolicies.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -12209,18 +11830,7 @@ class AggregatedListRoutersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12258,11 +11868,6 @@ class AggregatedListRoutersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12270,8 +11875,8 @@ class AggregatedListRoutersRequest(proto.Message): ) -class AggregatedListSecurityPoliciesRequest(proto.Message): - r"""A request message for SecurityPolicies.AggregatedList. See +class AggregatedListServiceAttachmentsRequest(proto.Message): + r"""A request message for ServiceAttachments.AggregatedList. See the method description for details. @@ -12396,17 +12001,6 @@ class AggregatedListSecurityPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12444,11 +12038,6 @@ class AggregatedListSecurityPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12456,9 +12045,9 @@ class AggregatedListSecurityPoliciesRequest(proto.Message): ) -class AggregatedListServiceAttachmentsRequest(proto.Message): - r"""A request message for ServiceAttachments.AggregatedList. See - the method description for details. +class AggregatedListSslCertificatesRequest(proto.Message): + r"""A request message for SslCertificates.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -12582,17 +12171,6 @@ class AggregatedListServiceAttachmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12630,11 +12208,6 @@ class AggregatedListServiceAttachmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12642,8 +12215,8 @@ class AggregatedListServiceAttachmentsRequest(proto.Message): ) -class AggregatedListSslCertificatesRequest(proto.Message): - r"""A request message for SslCertificates.AggregatedList. See the +class AggregatedListSslPoliciesRequest(proto.Message): + r"""A request message for SslPolicies.AggregatedList. See the method description for details. @@ -12768,17 +12341,6 @@ class AggregatedListSslCertificatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12816,11 +12378,6 @@ class AggregatedListSslCertificatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12828,195 +12385,9 @@ class AggregatedListSslCertificatesRequest(proto.Message): ) -class AggregatedListSslPoliciesRequest(proto.Message): - r"""A request message for SslPolicies.AggregatedList. See the - method description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - filter (str): - A filter expression that filters resources listed in the - response. Most Compute resources support two types of filter - expressions: expressions that support regular expressions - and expressions that follow API improvement proposal - AIP-160. 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``. - include_all_scopes (bool): - Indicates whether every visible scope for - each scope type (zone, region, global) should be - included in the response. For new resource types - added after this field, the flag has no effect - as new resource types will always include every - visible scope for each scope type in response. - For resource types which predate this field, if - this flag is omitted or false, only scopes of - the scope types where the resource type is - expected to be found will be included. - - This field is a member of `oneof`_ ``_include_all_scopes``. - max_results (int): - The maximum number of results per page that should be - returned. If the number of available results is larger than - ``maxResults``, Compute Engine returns a ``nextPageToken`` - that can be used to get the next page of results in - subsequent list requests. Acceptable values are ``0`` to - ``500``, inclusive. (Default: ``500``) - - This field is a member of `oneof`_ ``_max_results``. - order_by (str): - Sorts list results by a certain order. By default, results - are returned in alphanumerical order based on the resource - name. - - You can also sort results in descending order based on the - creation timestamp using - ``orderBy="creationTimestamp desc"``. This sorts results - based on the ``creationTimestamp`` field in reverse - chronological order (newest result first). Use this to sort - resources like operations so that the newest operation is - returned first. - - Currently, only sorting by ``name`` or - ``creationTimestamp desc`` is supported. - - This field is a member of `oneof`_ ``_order_by``. - page_token (str): - Specifies a page token to use. Set ``pageToken`` to the - ``nextPageToken`` returned by a previous list request to get - the next page of results. - - This field is a member of `oneof`_ ``_page_token``. - project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): - The Shared VPC service project id or service - project number for which aggregated list request - is invoked for subnetworks list-usable api. - - This field is a member of `oneof`_ ``_service_project_number``. - """ - - filter: str = proto.Field( - proto.STRING, - number=336120696, - optional=True, - ) - include_all_scopes: bool = proto.Field( - proto.BOOL, - number=391327988, - optional=True, - ) - max_results: int = proto.Field( - proto.UINT32, - number=54715419, - optional=True, - ) - order_by: str = proto.Field( - proto.STRING, - number=160562920, - optional=True, - ) - page_token: str = proto.Field( - proto.STRING, - number=19994697, - optional=True, - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - service_project_number: int = proto.Field( - proto.INT64, - number=316757497, - optional=True, - ) - - -class AggregatedListStoragePoolTypesRequest(proto.Message): - r"""A request message for StoragePoolTypes.AggregatedList. See - the method description for details. +class AggregatedListStoragePoolTypesRequest(proto.Message): + r"""A request message for StoragePoolTypes.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -13140,17 +12511,6 @@ class AggregatedListStoragePoolTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13188,11 +12548,6 @@ class AggregatedListStoragePoolTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13326,17 +12681,6 @@ class AggregatedListStoragePoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13374,11 +12718,6 @@ class AggregatedListStoragePoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13512,17 +12851,6 @@ class AggregatedListSubnetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13595,11 +12923,6 @@ class Views(proto.Enum): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13738,17 +13061,6 @@ class AggregatedListTargetHttpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13786,11 +13098,6 @@ class AggregatedListTargetHttpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13924,17 +13231,6 @@ class AggregatedListTargetHttpsProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13972,11 +13268,6 @@ class AggregatedListTargetHttpsProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14110,17 +13401,6 @@ class AggregatedListTargetInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14158,11 +13438,6 @@ class AggregatedListTargetInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14296,17 +13571,6 @@ class AggregatedListTargetPoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14344,11 +13608,6 @@ class AggregatedListTargetPoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14482,17 +13741,6 @@ class AggregatedListTargetTcpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14530,11 +13778,6 @@ class AggregatedListTargetTcpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14668,17 +13911,6 @@ class AggregatedListTargetVpnGatewaysRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14716,11 +13948,6 @@ class AggregatedListTargetVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14854,17 +14081,6 @@ class AggregatedListUrlMapsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14902,11 +14118,6 @@ class AggregatedListUrlMapsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -15040,17 +14251,6 @@ class AggregatedListVpnGatewaysRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -15088,11 +14288,6 @@ class AggregatedListVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -15226,17 +14421,6 @@ class AggregatedListVpnTunnelsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -15274,11 +14458,6 @@ class AggregatedListVpnTunnelsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -17196,8 +16375,6 @@ class AuditConfig(proto.Message): audit_log_configs (MutableSequence[google.cloud.compute_v1.types.AuditLogConfig]): The configuration for logging of each type of permission. - exempted_members (MutableSequence[str]): - service (str): Specifies a service that will be enabled for audit logging. For example, ``storage.googleapis.com``, @@ -17212,10 +16389,6 @@ class AuditConfig(proto.Message): number=488420626, message="AuditLogConfig", ) - exempted_members: MutableSequence[str] = proto.RepeatedField( - proto.STRING, - number=232615576, - ) service: str = proto.Field( proto.STRING, number=373540533, @@ -17254,9 +16427,6 @@ class AuditLogConfig(proto.Message): Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members. - ignore_child_exemptions (bool): - - This field is a member of `oneof`_ ``_ignore_child_exemptions``. log_type (str): The log type that this config enables. Check the LogType enum for the list of possible @@ -17292,11 +16462,6 @@ class LogType(proto.Enum): proto.STRING, number=232615576, ) - ignore_child_exemptions: bool = proto.Field( - proto.BOOL, - number=70141850, - optional=True, - ) log_type: str = proto.Field( proto.STRING, number=403115861, @@ -23954,9 +23119,6 @@ class Binding(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - binding_id (str): - - This field is a member of `oneof`_ ``_binding_id``. condition (google.cloud.compute_v1.types.Expr): The condition that is associated with this binding. @@ -24075,11 +23237,6 @@ class Binding(proto.Message): This field is a member of `oneof`_ ``_role``. """ - binding_id: str = proto.Field( - proto.STRING, - number=441088277, - optional=True, - ) condition: "Expr" = proto.Field( proto.MESSAGE, number=212430107, @@ -25875,6 +25032,8 @@ class CapacityAdviceRequestInstanceFlexibilityPolicy(proto.Message): class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelection(proto.Message): r"""Machine specification. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: disks (MutableSequence[google.cloud.compute_v1.types.CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelectionAttachedDisk]): Local SSDs. @@ -25883,6 +25042,13 @@ class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelection(proto.Mess machine_types (MutableSequence[str]): Full machine-type names, e.g. "n1-standard-16". + rank (int): + Optional. Rank when prioritizing the shape + flexibilities. The instance selections are + considered in the ascending order of the rank. + If not set, defaults to 0. + + This field is a member of `oneof`_ ``_rank``. """ disks: MutableSequence[ @@ -25901,6 +25067,11 @@ class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelection(proto.Mess proto.STRING, number=79720065, ) + rank: int = proto.Field( + proto.INT64, + number=3492908, + optional=True, + ) class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelectionAttachedDisk( @@ -26295,6 +25466,10 @@ class CapacityHistoryRequestInstanceProperties(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + disks (MutableSequence[google.cloud.compute_v1.types.CapacityHistoryRequestInstancePropertiesAttachedDisk]): + Local SSDs. + guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]): + Accelerators configuration. machine_type (str): The machine type for the VM, such as ``n2-standard-4``. @@ -26305,6 +25480,18 @@ class CapacityHistoryRequestInstanceProperties(proto.Message): This field is a member of `oneof`_ ``_scheduling``. """ + disks: MutableSequence["CapacityHistoryRequestInstancePropertiesAttachedDisk"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=95594102, + message="CapacityHistoryRequestInstancePropertiesAttachedDisk", + ) + ) + guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField( + proto.MESSAGE, + number=463595119, + message="AcceleratorConfig", + ) machine_type: str = proto.Field( proto.STRING, number=227711026, @@ -26318,6 +25505,44 @@ class CapacityHistoryRequestInstanceProperties(proto.Message): ) +class CapacityHistoryRequestInstancePropertiesAttachedDisk(proto.Message): + r"""AttachedDisk modeled after Instance's AttachedDisk. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + type_ (str): + Specifies the type of the disk. + Check the Type enum for the list of possible + values. + + This field is a member of `oneof`_ ``_type``. + """ + + class Type(proto.Enum): + r"""Specifies the type of the disk. + + Values: + UNDEFINED_TYPE (0): + A value indicating that the enum field is not + set. + DISK_TYPE_UNSPECIFIED (333621236): + Default value, unused. + SCRATCH (496778970): + Scratch disk (Local SSD). + """ + + UNDEFINED_TYPE = 0 + DISK_TYPE_UNSPECIFIED = 333621236 + SCRATCH = 496778970 + + type_: str = proto.Field( + proto.STRING, + number=3575610, + optional=True, + ) + + class CapacityHistoryRequestInstancePropertiesScheduling(proto.Message): r"""Scheduling options. @@ -26979,13 +26204,13 @@ class Commitment(proto.Message): GRAPHICS_OPTIMIZED_G4,GRAPHICS_OPTIMIZED_G4_VGPU,MEMORY_OPTIMIZED, MEMORY_OPTIMIZED_M3,MEMORY_OPTIMIZED_X4, STORAGE_OPTIMIZED_Z3,STORAGE_OPTIMIZED_Z4DS, - STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T. For example, - type MEMORY_OPTIMIZED specifies a commitment that applies - only to eligible resources of memory optimized M1 and M2 - machine series. Type GENERAL_PURPOSE specifies a commitment - that applies only to eligible resources of general purpose - N1 machine series. Check the Type enum for the list of - possible values. + STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T,STORAGE_OPTIMIZED_Z4M. + For example, type MEMORY_OPTIMIZED specifies a commitment + that applies only to eligible resources of memory optimized + M1 and M2 machine series. Type GENERAL_PURPOSE specifies a + commitment that applies only to eligible resources of + general purpose N1 machine series. Check the Type enum for + the list of possible values. This field is a member of `oneof`_ ``_type``. """ @@ -27091,11 +26316,12 @@ class Type(proto.Enum): GRAPHICS_OPTIMIZED_G4,GRAPHICS_OPTIMIZED_G4_VGPU,MEMORY_OPTIMIZED, MEMORY_OPTIMIZED_M3,MEMORY_OPTIMIZED_X4, STORAGE_OPTIMIZED_Z3,STORAGE_OPTIMIZED_Z4DS, - STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T. For example, type - MEMORY_OPTIMIZED specifies a commitment that applies only to - eligible resources of memory optimized M1 and M2 machine series. - Type GENERAL_PURPOSE specifies a commitment that applies only to - eligible resources of general purpose N1 machine series. + STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T,STORAGE_OPTIMIZED_Z4M. + For example, type MEMORY_OPTIMIZED specifies a commitment that + applies only to eligible resources of memory optimized M1 and M2 + machine series. Type GENERAL_PURPOSE specifies a commitment that + applies only to eligible resources of general purpose N1 machine + series. Values: UNDEFINED_TYPE (0): @@ -27199,6 +26425,8 @@ class Type(proto.Enum): CUD bucket for Z4DH machines. STORAGE_OPTIMIZED_Z4DS (35233733): CUD bucket for Z4DS machines. + STORAGE_OPTIMIZED_Z4M (157002327): + CUD bucket for Z4M (bare metal) machines. TYPE_UNSPECIFIED (437714322): Note for internal users: When adding a new enum Type for v1, make sure to also add it in the comment for the @@ -27253,6 +26481,7 @@ class Type(proto.Enum): STORAGE_OPTIMIZED_Z4D4T = 18503022 STORAGE_OPTIMIZED_Z4DH = 35233722 STORAGE_OPTIMIZED_Z4DS = 35233733 + STORAGE_OPTIMIZED_Z4M = 157002327 TYPE_UNSPECIFIED = 437714322 auto_renew: bool = proto.Field( @@ -39757,6 +38986,16 @@ class FirewallPolicyAssociation(proto.Message): The name for an association. This field is a member of `oneof`_ ``_name``. + priority (int): + An integer indicating the priority of an association. The + priority must be a positive value between 1 and 2147483647. + Firewall Policies are evaluated from highest to lowest + priority where 1 is the highest priority and 2147483647 is + the lowest priority. The default value is ``1000``. If two + associations have the same priority then lexicographical + order on association names is applied. + + This field is a member of `oneof`_ ``_priority``. short_name (str): Output only. [Output Only] The short name of the firewall policy of the association. @@ -39784,6 +39023,11 @@ class FirewallPolicyAssociation(proto.Message): number=3373707, optional=True, ) + priority: int = proto.Field( + proto.INT32, + number=445151652, + optional=True, + ) short_name: str = proto.Field( proto.STRING, number=492051566, @@ -41866,6 +41110,13 @@ class FutureReservation(proto.Message): should be set to false. This field is a member of `oneof`_ ``_auto_delete_auto_created_reservations``. + colocation_resource (str): + Full or partial URL of an existing future + reservation to indicate intent for reserving + capacity in the same cluster as the colocation + resource. + + This field is a member of `oneof`_ ``_colocation_resource``. commitment_info (google.cloud.compute_v1.types.FutureReservationCommitmentInfo): If not present, then FR will not deliver a new commitment or update an existing commitment. @@ -42154,6 +41405,11 @@ class SchedulingType(proto.Enum): number=491352490, optional=True, ) + colocation_resource: str = proto.Field( + proto.STRING, + number=32901740, + optional=True, + ) commitment_info: "FutureReservationCommitmentInfo" = proto.Field( proto.MESSAGE, number=164362136, @@ -44736,6 +43992,21 @@ class View(proto.Enum): ) +class GetGlobalFrontendSettingRequest(proto.Message): + r"""A request message for GlobalFrontendSettingsService.Get. See + the method description for details. + + Attributes: + project (str): + Required. Project ID for this request. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + + class GetGlobalNetworkEndpointGroupRequest(proto.Message): r"""A request message for GlobalNetworkEndpointGroups.Get. See the method description for details. @@ -46628,6 +45899,34 @@ class GetImageRequest(proto.Message): ) +class GetImageViewRequest(proto.Message): + r"""A request message for ImageViews.Get. See the method + description for details. + + Attributes: + project (str): + Required. Project ID for this request. + region (str): + Required. Name of the region for this + request. + resource_id (str): + Name of the image resource to return. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + resource_id: str = proto.Field( + proto.STRING, + number=160795372, + ) + + class GetInstanceGroupManagerRequest(proto.Message): r"""A request message for InstanceGroupManagers.Get. See the method description for details. @@ -47097,6 +46396,27 @@ class GetMacsecConfigInterconnectRequest(proto.Message): ) +class GetManagedRulesetRequest(proto.Message): + r"""A request message for ManagedRulesets.Get. See the method + description for details. + + Attributes: + managed_ruleset (str): + Name of the managed ruleset to return. + project (str): + Project ID for this request. + """ + + managed_ruleset: str = proto.Field( + proto.STRING, + number=447322950, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + + class GetNamedSetRouterRequest(proto.Message): r"""A request message for Routers.GetNamedSet. See the method description for details. @@ -47304,17 +46624,6 @@ class GetNatMappingInfoRoutersRequest(proto.Message): 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``. router (str): Name of the Router resource to query for Nat Mapping information of VM endpoints. @@ -47353,11 +46662,6 @@ class GetNatMappingInfoRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) router: str = proto.Field( proto.STRING, number=148608841, @@ -50411,17 +49715,6 @@ class GetXpnResourcesProjectsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -50448,11 +49741,6 @@ class GetXpnResourcesProjectsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class GetZoneOperationRequest(proto.Message): @@ -50573,120 +49861,247 @@ class GlobalAddressesMoveRequest(proto.Message): ) -class GlobalNetworkEndpointGroupsAttachEndpointsRequest(proto.Message): - r""" +class GlobalFrontendSettings(proto.Message): + r"""Represents the Global Frontend Bundle settings for a single + project. - Attributes: - network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): - The list of network endpoints to be attached. - """ - network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( - proto.MESSAGE, - number=149850285, - message="NetworkEndpoint", - ) - - -class GlobalNetworkEndpointGroupsDetachEndpointsRequest(proto.Message): - r""" + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): - The list of network endpoints to be detached. - """ - - network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( - proto.MESSAGE, - number=149850285, - message="NetworkEndpoint", - ) - + bundle_type (str): + Customer-settable bundle type. + Check the BundleType enum for the list of + possible values. -class GlobalOrganizationSetPolicyRequest(proto.Message): - r""" + This field is a member of `oneof`_ ``_bundle_type``. + creation_timestamp (str): + Output only. [Output Only] Creation timestamp in RFC3339 + text format. - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + Output only. [Output Only] An optional description of this + resource. - Attributes: - bindings (MutableSequence[google.cloud.compute_v1.types.Binding]): - Flatten Policy to create a backward - compatible wire-format. Deprecated. Use 'policy' - to specify bindings. + This field is a member of `oneof`_ ``_description``. etag (str): - Flatten Policy to create a backward - compatible wire-format. Deprecated. Use 'policy' - to specify the etag. + Output only. For optimistic locking. This field is a member of `oneof`_ ``_etag``. - policy (google.cloud.compute_v1.types.Policy): - REQUIRED: The complete policy to be applied - to the 'resource'. The size of the policy is - limited to a few 10s of KB. An empty policy is - in general a valid policy but certain services - (like Projects) might reject them. + 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`_ ``_policy``. + This field is a member of `oneof`_ ``_id``. + name (str): + Output only. OUTPUT_ONLY fields [Output Only] Name of the + resource. 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``. """ - bindings: MutableSequence["Binding"] = proto.RepeatedField( - proto.MESSAGE, - number=403251854, - message="Binding", + class BundleType(proto.Enum): + r"""Customer-settable bundle type. + + Values: + UNDEFINED_BUNDLE_TYPE (0): + A value indicating that the enum field is not + set. + BUNDLE_TYPE_UNSPECIFIED (466587567): + Bundling is not active. + GLOBAL_FRONT_END (182122473): + Standard Global Frontend bundle. + INDIVIDUAL (438800025): + Ala Carte mode. + """ + + UNDEFINED_BUNDLE_TYPE = 0 + BUNDLE_TYPE_UNSPECIFIED = 466587567 + GLOBAL_FRONT_END = 182122473 + INDIVIDUAL = 438800025 + + bundle_type: str = proto.Field( + proto.STRING, + number=291903703, + optional=True, + ) + creation_timestamp: str = proto.Field( + proto.STRING, + number=30525366, + optional=True, + ) + description: str = proto.Field( + proto.STRING, + number=422937596, + optional=True, ) etag: str = proto.Field( proto.STRING, number=3123477, optional=True, ) - policy: "Policy" = proto.Field( - proto.MESSAGE, - number=91071794, + id: int = proto.Field( + proto.UINT64, + number=3355, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + self_link: str = proto.Field( + proto.STRING, + number=456214797, optional=True, - message="Policy", ) -class GlobalSetLabelsRequest(proto.Message): - r""" +class GlobalFrontendSettingsPatchResponse(proto.Message): + r"""Response to an UpdateGlobalFrontendSettingsRequest. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - label_fingerprint (str): - The fingerprint of the previous set of labels - for this resource, used to detect conflicts. The - fingerprint is initially generated by Compute - Engine and changes after every request to modify - or update labels. You must always provide an - up-to-date fingerprint hash when updating or - changing labels, otherwise the request will fail - with error412 conditionNotMet. Make a get() - request to the resource to get the latest - fingerprint. + operation (google.cloud.compute_v1.types.Operation): + The Operation resource for this long-running + operation. - This field is a member of `oneof`_ ``_label_fingerprint``. - labels (MutableMapping[str, str]): - A list of labels to apply for this resource. - Each label must comply with the - requirements for labels. For - example,"webserver-frontend": "images". A label - value can also be empty (e.g. "my-label": ""). + This field is a member of `oneof`_ ``_operation``. """ - label_fingerprint: str = proto.Field( - proto.STRING, - number=178124825, + operation: "Operation" = proto.Field( + proto.MESSAGE, + number=52090215, optional=True, + message="Operation", ) - labels: MutableMapping[str, str] = proto.MapField( - proto.STRING, - proto.STRING, - number=500195327, + + +class GlobalNetworkEndpointGroupsAttachEndpointsRequest(proto.Message): + r""" + + Attributes: + network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): + The list of network endpoints to be attached. + """ + + network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( + proto.MESSAGE, + number=149850285, + message="NetworkEndpoint", ) -class GlobalSetPolicyRequest(proto.Message): +class GlobalNetworkEndpointGroupsDetachEndpointsRequest(proto.Message): + r""" + + Attributes: + network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): + The list of network endpoints to be detached. + """ + + network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( + proto.MESSAGE, + number=149850285, + message="NetworkEndpoint", + ) + + +class GlobalOrganizationSetPolicyRequest(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + bindings (MutableSequence[google.cloud.compute_v1.types.Binding]): + Flatten Policy to create a backward + compatible wire-format. Deprecated. Use 'policy' + to specify bindings. + etag (str): + Flatten Policy to create a backward + compatible wire-format. Deprecated. Use 'policy' + to specify the etag. + + This field is a member of `oneof`_ ``_etag``. + policy (google.cloud.compute_v1.types.Policy): + REQUIRED: The complete policy to be applied + to the 'resource'. The size of the policy is + limited to a few 10s of KB. An empty policy is + in general a valid policy but certain services + (like Projects) might reject them. + + This field is a member of `oneof`_ ``_policy``. + """ + + bindings: MutableSequence["Binding"] = proto.RepeatedField( + proto.MESSAGE, + number=403251854, + message="Binding", + ) + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) + policy: "Policy" = proto.Field( + proto.MESSAGE, + number=91071794, + optional=True, + message="Policy", + ) + + +class GlobalSetLabelsRequest(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + label_fingerprint (str): + The fingerprint of the previous set of labels + for this resource, used to detect conflicts. The + fingerprint is initially generated by Compute + Engine and changes after every request to modify + or update labels. You must always provide an + up-to-date fingerprint hash when updating or + changing labels, otherwise the request will fail + with error412 conditionNotMet. Make a get() + request to the resource to get the latest + fingerprint. + + This field is a member of `oneof`_ ``_label_fingerprint``. + labels (MutableMapping[str, str]): + A list of labels to apply for this resource. + Each label must comply with the + requirements for labels. For + example,"webserver-frontend": "images". A label + value can also be empty (e.g. "my-label": ""). + """ + + label_fingerprint: str = proto.Field( + proto.STRING, + number=178124825, + optional=True, + ) + labels: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=500195327, + ) + + +class GlobalSetPolicyRequest(proto.Message): r""" .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -56794,6 +56209,108 @@ class ImageParams(proto.Message): ) +class ImageView(proto.Message): + r"""Represents a read-only view of a global Image resource. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + image (google.cloud.compute_v1.types.Image): + The Image resource. + + This field is a member of `oneof`_ ``_image``. + """ + + image: "Image" = proto.Field( + proto.MESSAGE, + number=100313435, + optional=True, + message="Image", + ) + + +class ImageViewsListResponse(proto.Message): + r"""Response message for ImageViewsService.List + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + etag (str): + Etag of the resource. + + This field is a member of `oneof`_ ``_etag``. + id (str): + [Output Only] Unique identifier for the resource; defined by + the server. + + This field is a member of `oneof`_ ``_id``. + items (MutableSequence[google.cloud.compute_v1.types.ImageView]): + A list of Image resources. + kind (str): + + This field is a member of `oneof`_ ``_kind``. + next_page_token (str): + + 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. + warning (google.cloud.compute_v1.types.Warning): + [Output Only] Informational warning message. + + This field is a member of `oneof`_ ``_warning``. + """ + + @property + def raw_page(self): + return self + + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) + id: str = proto.Field( + proto.STRING, + number=3355, + optional=True, + ) + items: MutableSequence["ImageView"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="ImageView", + ) + 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 InitialStateConfig(proto.Message): r"""Initial State for shielded instance, these are public keys which are safe to store in public @@ -57251,6 +56768,8 @@ class InsertFirewallPolicyRequest(proto.Message): "folders/[FOLDER_ID]" if the parent is a folder or "organizations/[ORGANIZATION_ID]" if the parent is an organization. + + This field is a member of `oneof`_ ``_parent_id``. request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -57283,6 +56802,7 @@ class InsertFirewallPolicyRequest(proto.Message): parent_id: str = proto.Field( proto.STRING, number=459714768, + optional=True, ) request_id: str = proto.Field( proto.STRING, @@ -64300,9 +63820,18 @@ class InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection(proto.Messa .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + disks (MutableSequence[google.cloud.compute_v1.types.AttachedDisk]): + List of disks to be attached to the instances + created from this selection. machine_types (MutableSequence[str]): Full machine-type names, e.g. "n1-standard-16". + min_cpu_platform (str): + Name of the minimum CPU platform to be used + by this instance selection. e.g. 'Intel Ice + Lake'. + + This field is a member of `oneof`_ ``_min_cpu_platform``. rank (int): Preference of this instance selection. Lower number means higher preference. MIG will first @@ -64315,10 +63844,20 @@ class InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection(proto.Messa This field is a member of `oneof`_ ``_rank``. """ + disks: MutableSequence["AttachedDisk"] = proto.RepeatedField( + proto.MESSAGE, + number=95594102, + message="AttachedDisk", + ) machine_types: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=79720065, ) + min_cpu_platform: str = proto.Field( + proto.STRING, + number=242912759, + optional=True, + ) rank: int = proto.Field( proto.INT32, number=3492908, @@ -76266,6 +75805,38 @@ class InterconnectsGetMacsecConfigResponse(proto.Message): ) +class InterconnectsSetNameRequest(proto.Message): + r"""Request to rename an interconnect. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + current_name (str): + The current name of the interconnect. + The name must be 1-63 characters long, and + comply with RFC1035. + + This field is a member of `oneof`_ ``_current_name``. + name (str): + The new name of the interconnect. + The name must be 1-63 characters long, and + comply with RFC1035. + + This field is a member of `oneof`_ ``_name``. + """ + + current_name: str = proto.Field( + proto.STRING, + number=394983825, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + + class Interval(proto.Message): r"""Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). @@ -77174,17 +76745,6 @@ class ListAcceleratorTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -77213,11 +76773,6 @@ class ListAcceleratorTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -77339,17 +76894,6 @@ class ListAddressesRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -77380,11 +76924,6 @@ class ListAddressesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListAssociationsFirewallPolicyRequest(proto.Message): @@ -77558,17 +77097,6 @@ class ListAutoscalersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. """ @@ -77597,11 +77125,6 @@ class ListAutoscalersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -77724,17 +77247,6 @@ class ListAvailableFeaturesRegionSslPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -77765,11 +77277,6 @@ class ListAvailableFeaturesRegionSslPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListAvailableFeaturesSslPoliciesRequest(proto.Message): @@ -77885,17 +77392,6 @@ class ListAvailableFeaturesSslPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -77922,11 +77418,6 @@ class ListAvailableFeaturesSslPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListBackendBucketsRequest(proto.Message): @@ -78042,17 +77533,6 @@ class ListBackendBucketsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -78079,11 +77559,6 @@ class ListBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListBackendServicesRequest(proto.Message): @@ -78199,17 +77674,6 @@ class ListBackendServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -78236,11 +77700,6 @@ class ListBackendServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListBgpRoutesRoutersRequest(proto.Message): @@ -78380,17 +77839,6 @@ class ListBgpRoutesRoutersRequest(proto.Message): 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``. route_type (str): (Required) limit results to this type of route (either LEARNED or ADVERTISED) @@ -78493,11 +77941,6 @@ class RouteType(proto.Enum): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) route_type: str = proto.Field( proto.STRING, number=375888752, @@ -78622,17 +78065,6 @@ class ListCrossSiteNetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -78659,11 +78091,6 @@ class ListCrossSiteNetworksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListDiskTypesRequest(proto.Message): @@ -78779,17 +78206,6 @@ class ListDiskTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -78818,11 +78234,6 @@ class ListDiskTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -78942,17 +78353,155 @@ class ListDisksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. + zone (str): + The name of the zone for this request. + """ - 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. + 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, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + + +class ListDisksStoragePoolsRequest(proto.Message): + r"""A request message for StoragePools.ListDisks. 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`_ ``_return_partial_success``. + This field is a member of `oneof`_ ``_page_token``. + project (str): + Project ID for this request. + storage_pool (str): + Name of the storage pool to list disks of. zone (str): The name of the zone for this request. """ @@ -78981,19 +78530,474 @@ class ListDisksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + storage_pool: str = proto.Field( + proto.STRING, + number=360473440, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + + +class ListErrorsInstanceGroupManagersRequest(proto.Message): + r"""A request message for InstanceGroupManagers.ListErrors. See + the method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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``. + instance_group_manager (str): + The name of the managed instance group. It must be a string + that meets the requirements in RFC1035, or an unsigned long + integer: must match regexp pattern: + (?:`a-z `__?)|1-9{0,19}. + max_results (int): + The maximum number of results per page that should be + returned. If the number of available results is larger than + ``maxResults``, Compute Engine returns a ``nextPageToken`` + that can be used to get the next page of results in + subsequent list requests. Acceptable values are ``0`` to + ``500``, inclusive. (Default: ``500``) + + This field is a member of `oneof`_ ``_max_results``. + order_by (str): + Sorts list results by a certain order. By default, results + are returned in alphanumerical order based on the resource + name. + + You can also sort results in descending order based on the + creation timestamp using + ``orderBy="creationTimestamp desc"``. This sorts results + based on the ``creationTimestamp`` field in reverse + chronological order (newest result first). Use this to sort + resources like operations so that the newest operation is + returned first. + + Currently, only sorting by ``name`` or + ``creationTimestamp desc`` is supported. + + This field is a member of `oneof`_ ``_order_by``. + page_token (str): + Specifies a page token to use. Set ``pageToken`` to the + ``nextPageToken`` returned by a previous list request to get + the next page of results. + + This field is a member of `oneof`_ ``_page_token``. + project (str): + Project ID for this request. + zone (str): + The name of thezone where the managed + instance group is located. + It should conform to RFC1035. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, optional=True, ) + instance_group_manager: str = proto.Field( + proto.STRING, + number=249363395, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, + optional=True, + ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, + optional=True, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) zone: str = proto.Field( proto.STRING, number=3744684, ) -class ListDisksStoragePoolsRequest(proto.Message): - r"""A request message for StoragePools.ListDisks. See the method +class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): + r"""A request message for RegionInstanceGroupManagers.ListErrors. + See the method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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``. + instance_group_manager (str): + The name of the managed instance group. It must be a string + that meets the requirements in RFC1035, or an unsigned long + integer: must match regexp pattern: + (?:`a-z `__?)|1-9{0,19}. + max_results (int): + The maximum number of results per page that should be + returned. If the number of available results is larger than + ``maxResults``, Compute Engine returns a ``nextPageToken`` + that can be used to get the next page of results in + subsequent list requests. Acceptable values are ``0`` to + ``500``, inclusive. (Default: ``500``) + + This field is a member of `oneof`_ ``_max_results``. + order_by (str): + Sorts list results by a certain order. By default, results + are returned in alphanumerical order based on the resource + name. + + You can also sort results in descending order based on the + creation timestamp using + ``orderBy="creationTimestamp desc"``. This sorts results + based on the ``creationTimestamp`` field in reverse + chronological order (newest result first). Use this to sort + resources like operations so that the newest operation is + returned first. + + Currently, only sorting by ``name`` or + ``creationTimestamp desc`` is supported. + + This field is a member of `oneof`_ ``_order_by``. + page_token (str): + Specifies a page token to use. Set ``pageToken`` to the + ``nextPageToken`` returned by a previous list request to get + the next page of results. + + This field is a member of `oneof`_ ``_page_token``. + project (str): + Project ID for this request. + region (str): + Name of the region scoping this request. + This should conform to RFC1035. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, + optional=True, + ) + instance_group_manager: str = proto.Field( + proto.STRING, + number=249363395, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, + optional=True, + ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, + optional=True, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + + +class ListExternalVpnGatewaysRequest(proto.Message): + r"""A request message for ExternalVpnGateways.List. See the + method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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. + """ + + 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, + ) + + +class ListFirewallPoliciesRequest(proto.Message): + r"""A request message for FirewallPolicies.List. See the method description for details. @@ -79103,23 +79107,13 @@ class ListDisksStoragePoolsRequest(proto.Message): the next page of results. This field is a member of `oneof`_ ``_page_token``. - project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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. + parent_id (str): + Parent ID for this request. The ID can be either be + "folders/[FOLDER_ID]" if the parent is a folder or + "organizations/[ORGANIZATION_ID]" if the parent is an + organization. - This field is a member of `oneof`_ ``_return_partial_success``. - storage_pool (str): - Name of the storage pool to list disks of. - zone (str): - The name of the zone for this request. + This field is a member of `oneof`_ ``_parent_id``. """ filter: str = proto.Field( @@ -79142,28 +79136,16 @@ class ListDisksStoragePoolsRequest(proto.Message): number=19994697, optional=True, ) - project: str = proto.Field( + parent_id: str = proto.Field( proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + number=459714768, optional=True, ) - storage_pool: str = proto.Field( - proto.STRING, - number=360473440, - ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListErrorsInstanceGroupManagersRequest(proto.Message): - r"""A request message for InstanceGroupManagers.ListErrors. See - the method description for details. +class ListFirewallsRequest(proto.Message): + r"""A request message for Firewalls.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79240,11 +79222,6 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): regular expressions. This field is a member of `oneof`_ ``_filter``. - instance_group_manager (str): - The name of the managed instance group. It must be a string - that meets the requirements in RFC1035, or an unsigned long - integer: must match regexp pattern: - (?:`a-z `__?)|1-9{0,19}. max_results (int): The maximum number of results per page that should be returned. If the number of available results is larger than @@ -79279,21 +79256,6 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - The name of thezone where the managed - instance group is located. - It should conform to RFC1035. """ filter: str = proto.Field( @@ -79301,10 +79263,6 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): number=336120696, optional=True, ) - instance_group_manager: str = proto.Field( - proto.STRING, - number=249363395, - ) max_results: int = proto.Field( proto.UINT32, number=54715419, @@ -79324,20 +79282,11 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): - r"""A request message for RegionInstanceGroupManagers.ListErrors. - See the method description for details. +class ListForwardingRulesRequest(proto.Message): + r"""A request message for ForwardingRules.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79414,11 +79363,6 @@ class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): regular expressions. This field is a member of `oneof`_ ``_filter``. - instance_group_manager (str): - The name of the managed instance group. It must be a string - that meets the requirements in RFC1035, or an unsigned long - integer: must match regexp pattern: - (?:`a-z `__?)|1-9{0,19}. max_results (int): The maximum number of results per page that should be returned. If the number of available results is larger than @@ -79455,18 +79399,6 @@ class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - This should conform to RFC1035. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -79474,10 +79406,6 @@ class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): number=336120696, optional=True, ) - instance_group_manager: str = proto.Field( - proto.STRING, - number=249363395, - ) max_results: int = proto.Field( proto.UINT32, number=54715419, @@ -79501,16 +79429,11 @@ class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListExternalVpnGatewaysRequest(proto.Message): - r"""A request message for ExternalVpnGateways.List. See the - method description for details. +class ListFutureReservationsRequest(proto.Message): + r"""A request message for FutureReservations.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79621,17 +79544,9 @@ class ListExternalVpnGatewaysRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + zone (str): + Name of the zone for this request. Name + should conform to RFC1035. """ filter: str = proto.Field( @@ -79658,178 +79573,14 @@ class ListExternalVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - - -class ListFirewallPoliciesRequest(proto.Message): - r"""A request message for FirewallPolicies.List. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - filter (str): - A filter expression that filters resources listed in the - response. Most Compute resources support two types of filter - expressions: expressions that support regular expressions - and expressions that follow API improvement proposal - AIP-160. 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``. - parent_id (str): - Parent ID for this request. The ID can be either be - "folders/[FOLDER_ID]" if the parent is a folder or - "organizations/[ORGANIZATION_ID]" if the parent is an - organization. - - This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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, - ) - order_by: str = proto.Field( - proto.STRING, - number=160562920, - optional=True, - ) - page_token: str = proto.Field( - proto.STRING, - number=19994697, - optional=True, - ) - parent_id: str = proto.Field( + zone: str = proto.Field( proto.STRING, - number=459714768, - optional=True, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + number=3744684, ) -class ListFirewallsRequest(proto.Message): - r"""A request message for Firewalls.List. See the method +class ListGlobalAddressesRequest(proto.Message): + r"""A request message for GlobalAddresses.List. See the method description for details. @@ -79941,17 +79692,6 @@ class ListFirewallsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -79978,16 +79718,11 @@ class ListFirewallsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListForwardingRulesRequest(proto.Message): - r"""A request message for ForwardingRules.List. See the method - description for details. +class ListGlobalForwardingRulesRequest(proto.Message): + r"""A request message for GlobalForwardingRules.List. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80098,19 +79833,6 @@ class ListForwardingRulesRequest(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 - 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( @@ -80137,20 +79859,11 @@ class ListForwardingRulesRequest(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, - ) -class ListFutureReservationsRequest(proto.Message): - r"""A request message for FutureReservations.List. See the method - description for details. +class ListGlobalNetworkEndpointGroupsRequest(proto.Message): + r"""A request message for GlobalNetworkEndpointGroups.List. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80261,20 +79974,6 @@ class ListFutureReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - Name of the zone for this request. Name - should conform to RFC1035. """ filter: str = proto.Field( @@ -80301,19 +80000,10 @@ class ListFutureReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListGlobalAddressesRequest(proto.Message): - r"""A request message for GlobalAddresses.List. See the method +class ListGlobalOperationsRequest(proto.Message): + r"""A request message for GlobalOperations.List. See the method description for details. @@ -80425,17 +80115,6 @@ class ListGlobalAddressesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -80462,16 +80141,11 @@ class ListGlobalAddressesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListGlobalForwardingRulesRequest(proto.Message): - r"""A request message for GlobalForwardingRules.List. See the - method description for details. +class ListGlobalOrganizationOperationsRequest(proto.Message): + r"""A request message for GlobalOrganizationOperations.List. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80580,19 +80254,10 @@ class ListGlobalForwardingRulesRequest(proto.Message): the next page of results. This field is a member of `oneof`_ ``_page_token``. - project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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. + parent_id (str): + Parent ID for this request. - This field is a member of `oneof`_ ``_return_partial_success``. + This field is a member of `oneof`_ ``_parent_id``. """ filter: str = proto.Field( @@ -80615,19 +80280,15 @@ class ListGlobalForwardingRulesRequest(proto.Message): number=19994697, optional=True, ) - project: str = proto.Field( + parent_id: str = proto.Field( proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + number=459714768, optional=True, ) -class ListGlobalNetworkEndpointGroupsRequest(proto.Message): - r"""A request message for GlobalNetworkEndpointGroups.List. See +class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): + r"""A request message for GlobalPublicDelegatedPrefixes.List. See the method description for details. @@ -80739,17 +80400,6 @@ class ListGlobalNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -80776,16 +80426,11 @@ class ListGlobalNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListGlobalOperationsRequest(proto.Message): - r"""A request message for GlobalOperations.List. See the method - description for details. +class ListGlobalVmExtensionPoliciesRequest(proto.Message): + r"""A request message for GlobalVmExtensionPolicies.List. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80896,17 +80541,6 @@ class ListGlobalOperationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -80933,176 +80567,11 @@ class ListGlobalOperationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - - -class ListGlobalOrganizationOperationsRequest(proto.Message): - r"""A request message for GlobalOrganizationOperations.List. See - the method description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - filter (str): - A filter expression that filters resources listed in the - response. Most Compute resources support two types of filter - expressions: expressions that support regular expressions - and expressions that follow API improvement proposal - AIP-160. 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``. - parent_id (str): - Parent ID for this request. - - This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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, - ) - order_by: str = proto.Field( - proto.STRING, - number=160562920, - optional=True, - ) - page_token: str = proto.Field( - proto.STRING, - number=19994697, - optional=True, - ) - parent_id: str = proto.Field( - proto.STRING, - number=459714768, - optional=True, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - - -class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): - r"""A request message for GlobalPublicDelegatedPrefixes.List. See - the method description for details. +class ListHealthChecksRequest(proto.Message): + r"""A request message for HealthChecks.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -81213,17 +80682,6 @@ class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -81250,21 +80708,24 @@ class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListGlobalVmExtensionPoliciesRequest(proto.Message): - r"""A request message for GlobalVmExtensionPolicies.List. See the - method description for details. +class ListHostsRequest(proto.Message): + r"""A request message for Hosts.List. See the method description + for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + association (str): + The parent resource association for the Host. This field + specifies the hierarchical context (e.g., reservation, + block, sub-block) when accessing the host. For example, + reservations/reservation_name, + reservations/reservation_name/reservationBlocks/reservation_block_name + or + reservations/reservation_name/reservationBlocks/reservation_block_name/reservationSubBlocks/reservation_sub_block_name. filter (str): A filter expression that filters resources listed in the response. Most Compute resources support two types of filter @@ -81369,20 +80830,16 @@ class ListGlobalVmExtensionPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + The project ID for this request. + zone (str): + The name of the zone for this request, + formatted as RFC1035. """ + association: str = proto.Field( + proto.STRING, + number=449371265, + ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -81407,186 +80864,20 @@ class ListGlobalVmExtensionPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - - -class ListHealthChecksRequest(proto.Message): - r"""A request message for HealthChecks.List. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - filter (str): - A filter expression that filters resources listed in the - response. Most Compute resources support two types of filter - expressions: expressions that support regular expressions - and expressions that follow API improvement proposal - AIP-160. 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. - 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, - ) - 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( + zone: str = proto.Field( proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + number=3744684, ) -class ListHostsRequest(proto.Message): - r"""A request message for Hosts.List. See the method description - for details. +class ListImageViewsRequest(proto.Message): + r"""A request message for ImageViews.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - association (str): - The parent resource association for the Host. This field - specifies the hierarchical context (e.g., reservation, - block, sub-block) when accessing the host. For example, - reservations/reservation_name, - reservations/reservation_name/reservationBlocks/reservation_block_name - or - reservations/reservation_name/reservationBlocks/reservation_block_name/reservationSubBlocks/reservation_sub_block_name. filter (str): A filter expression that filters resources listed in the response. Most Compute resources support two types of filter @@ -81691,27 +80982,12 @@ class ListHostsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - The project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - The name of the zone for this request, - formatted as RFC1035. + Required. Project ID for this request. + region (str): + Required. Name of the region for this + request. """ - association: str = proto.Field( - proto.STRING, - number=449371265, - ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -81736,14 +81012,9 @@ class ListHostsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( + region: str = proto.Field( proto.STRING, - number=3744684, + number=138946292, ) @@ -81860,17 +81131,6 @@ class ListImagesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -81897,11 +81157,6 @@ class ListImagesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInstanceGroupManagerResizeRequestsRequest(proto.Message): @@ -82021,17 +81276,6 @@ class ListInstanceGroupManagerResizeRequestsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. The name should @@ -82066,11 +81310,6 @@ class ListInstanceGroupManagerResizeRequestsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82190,17 +81429,6 @@ class ListInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. @@ -82230,11 +81458,6 @@ class ListInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82354,17 +81577,6 @@ class ListInstanceGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the instance group is located. @@ -82394,11 +81606,6 @@ class ListInstanceGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82518,17 +81725,6 @@ class ListInstanceTemplatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -82555,11 +81751,6 @@ class ListInstanceTemplatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInstancesInstanceGroupsRequest(proto.Message): @@ -82680,17 +81871,6 @@ class ListInstancesInstanceGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone where the instance group is located. @@ -82729,11 +81909,6 @@ class ListInstancesInstanceGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82860,17 +82035,6 @@ class ListInstancesRegionInstanceGroupsRequest(proto.Message): Name of the region scoping this request. region_instance_groups_list_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupsListInstancesRequest): The body resource for this request - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -82910,11 +82074,6 @@ class ListInstancesRegionInstanceGroupsRequest(proto.Message): number=48239828, message="RegionInstanceGroupsListInstancesRequest", ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInstancesRequest(proto.Message): @@ -83030,17 +82189,6 @@ class ListInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -83069,11 +82217,6 @@ class ListInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -83282,17 +82425,6 @@ class ListInstantSnapshotGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -83321,11 +82453,6 @@ class ListInstantSnapshotGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -83445,17 +82572,6 @@ class ListInstantSnapshotsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -83484,11 +82600,6 @@ class ListInstantSnapshotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -83608,17 +82719,6 @@ class ListInterconnectAttachmentGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -83645,11 +82745,6 @@ class ListInterconnectAttachmentGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectAttachmentsRequest(proto.Message): @@ -83767,17 +82862,6 @@ class ListInterconnectAttachmentsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -83808,11 +82892,6 @@ class ListInterconnectAttachmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectGroupsRequest(proto.Message): @@ -83928,17 +83007,6 @@ class ListInterconnectGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -83965,11 +83033,6 @@ class ListInterconnectGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectLocationsRequest(proto.Message): @@ -84085,17 +83148,6 @@ class ListInterconnectLocationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84122,11 +83174,6 @@ class ListInterconnectLocationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectRemoteLocationsRequest(proto.Message): @@ -84242,17 +83289,6 @@ class ListInterconnectRemoteLocationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84279,11 +83315,6 @@ class ListInterconnectRemoteLocationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectsRequest(proto.Message): @@ -84399,17 +83430,6 @@ class ListInterconnectsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84436,11 +83456,6 @@ class ListInterconnectsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListLicensesRequest(proto.Message): @@ -84556,17 +83571,6 @@ class ListLicensesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84593,11 +83597,6 @@ class ListLicensesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListMachineImagesRequest(proto.Message): @@ -84713,17 +83712,6 @@ class ListMachineImagesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84750,11 +83738,6 @@ class ListMachineImagesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListMachineTypesRequest(proto.Message): @@ -84870,17 +83853,6 @@ class ListMachineTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -84909,11 +83881,6 @@ class ListMachineTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -85036,17 +84003,6 @@ class ListManagedInstancesInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. @@ -85080,11 +84036,6 @@ class ListManagedInstancesInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -85209,17 +84160,6 @@ class ListManagedInstancesRegionInstanceGroupManagersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -85254,11 +84194,147 @@ class ListManagedInstancesRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + + +class ListManagedRulesetsRequest(proto.Message): + r"""A request message for ManagedRulesets.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. + """ + + 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, + ) class ListNamedSetsRoutersRequest(proto.Message): @@ -85376,17 +84452,6 @@ class ListNamedSetsRoutersRequest(proto.Message): 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``. router (str): Name or id of the resource for this request. Name should conform to RFC1035. @@ -85420,11 +84485,6 @@ class ListNamedSetsRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) router: str = proto.Field( proto.STRING, number=148608841, @@ -85546,17 +84606,6 @@ class ListNetworkAttachmentsRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -85587,11 +84636,6 @@ class ListNetworkAttachmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNetworkEndpointGroupsRequest(proto.Message): @@ -85707,17 +84751,6 @@ class ListNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the network endpoint group is located. It @@ -85748,11 +84781,6 @@ class ListNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -85878,17 +84906,6 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -85919,11 +84936,6 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): @@ -86047,17 +85059,6 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone where the network endpoint group is located. It should @@ -86097,11 +85098,6 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -86231,17 +85227,6 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): 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( @@ -86276,11 +85261,6 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNetworkFirewallPoliciesRequest(proto.Message): @@ -86396,17 +85376,6 @@ class ListNetworkFirewallPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -86433,11 +85402,6 @@ class ListNetworkFirewallPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNetworkProfilesRequest(proto.Message): @@ -86553,17 +85517,6 @@ class ListNetworkProfilesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -86590,11 +85543,6 @@ class ListNetworkProfilesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNetworksRequest(proto.Message): @@ -86710,17 +85658,6 @@ class ListNetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -86747,11 +85684,6 @@ class ListNetworksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNodeGroupsRequest(proto.Message): @@ -86867,17 +85799,6 @@ class ListNodeGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -86906,11 +85827,6 @@ class ListNodeGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -87032,17 +85948,6 @@ class ListNodeTemplatesRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -87073,11 +85978,6 @@ class ListNodeTemplatesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNodeTypesRequest(proto.Message): @@ -87193,17 +86093,6 @@ class ListNodeTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -87232,11 +86121,6 @@ class ListNodeTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -87359,17 +86243,6 @@ class ListNodesNodeGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -87402,11 +86275,6 @@ class ListNodesNodeGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -87528,17 +86396,6 @@ class ListOrganizationSecurityPoliciesRequest(proto.Message): Parent ID for this request. This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -87566,11 +86423,6 @@ class ListOrganizationSecurityPoliciesRequest(proto.Message): number=459714768, optional=True, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPacketMirroringsRequest(proto.Message): @@ -87688,17 +86540,6 @@ class ListPacketMirroringsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -87729,11 +86570,6 @@ class ListPacketMirroringsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPeeringRoutesNetworksRequest(proto.Message): @@ -87868,17 +86704,6 @@ class ListPeeringRoutesNetworksRequest(proto.Message): dynamic routes in the region. This field is a member of `oneof`_ ``_region``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. """ class Direction(proto.Enum): @@ -87941,11 +86766,6 @@ class Direction(proto.Enum): number=138946292, optional=True, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message): @@ -88065,17 +86885,6 @@ class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. @@ -88110,11 +86919,6 @@ class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -88241,17 +87045,6 @@ class ListPerInstanceConfigsRegionInstanceGroupManagersRequest(proto.Message): region (str): Name of the region scoping this request, should conform to RFC1035. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88286,11 +87079,6 @@ class ListPerInstanceConfigsRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPreconfiguredExpressionSetsOrganizationSecurityPoliciesRequest(proto.Message): @@ -88409,17 +87197,6 @@ class ListPreconfiguredExpressionSetsOrganizationSecurityPoliciesRequest(proto.M Parent ID for this request. This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88447,11 +87224,6 @@ class ListPreconfiguredExpressionSetsOrganizationSecurityPoliciesRequest(proto.M number=459714768, optional=True, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message): @@ -88568,17 +87340,6 @@ class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88605,11 +87366,6 @@ class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPreviewFeaturesRequest(proto.Message): @@ -88725,17 +87481,6 @@ class ListPreviewFeaturesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88762,11 +87507,6 @@ class ListPreviewFeaturesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPublicAdvertisedPrefixesRequest(proto.Message): @@ -88882,17 +87622,6 @@ class ListPublicAdvertisedPrefixesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88919,11 +87648,6 @@ class ListPublicAdvertisedPrefixesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPublicDelegatedPrefixesRequest(proto.Message): @@ -89041,17 +87765,6 @@ class ListPublicDelegatedPrefixesRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89082,11 +87795,6 @@ class ListPublicDelegatedPrefixesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListReferrersInstancesRequest(proto.Message): @@ -89206,17 +87914,6 @@ class ListReferrersInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -89249,11 +87946,6 @@ class ListReferrersInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -89375,17 +88067,6 @@ class ListRegionAutoscalersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89416,11 +88097,6 @@ class ListRegionAutoscalersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionBackendBucketsRequest(proto.Message): @@ -89538,17 +88214,6 @@ class ListRegionBackendBucketsRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89579,11 +88244,6 @@ class ListRegionBackendBucketsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionBackendServicesRequest(proto.Message): @@ -89701,17 +88361,6 @@ class ListRegionBackendServicesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89742,11 +88391,6 @@ class ListRegionBackendServicesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionCommitmentsRequest(proto.Message): @@ -89864,17 +88508,6 @@ class ListRegionCommitmentsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -89905,11 +88538,6 @@ class ListRegionCommitmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionCompositeHealthChecksRequest(proto.Message): @@ -90027,17 +88655,6 @@ class ListRegionCompositeHealthChecksRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90068,11 +88685,6 @@ class ListRegionCompositeHealthChecksRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionDiskTypesRequest(proto.Message): @@ -90190,17 +88802,6 @@ class ListRegionDiskTypesRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90231,11 +88832,6 @@ class ListRegionDiskTypesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionDisksRequest(proto.Message): @@ -90353,17 +88949,6 @@ class ListRegionDisksRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -90394,11 +88979,6 @@ class ListRegionDisksRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthAggregationPoliciesRequest(proto.Message): @@ -90516,17 +89096,6 @@ class ListRegionHealthAggregationPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90557,11 +89126,6 @@ class ListRegionHealthAggregationPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthCheckServicesRequest(proto.Message): @@ -90679,17 +89243,6 @@ class ListRegionHealthCheckServicesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90720,11 +89273,6 @@ class ListRegionHealthCheckServicesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthChecksRequest(proto.Message): @@ -90842,17 +89390,6 @@ class ListRegionHealthChecksRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90883,11 +89420,6 @@ class ListRegionHealthChecksRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthSourcesRequest(proto.Message): @@ -91005,17 +89537,6 @@ class ListRegionHealthSourcesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91046,11 +89567,6 @@ class ListRegionHealthSourcesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceGroupManagerResizeRequestsRequest(proto.Message): @@ -91174,17 +89690,6 @@ class ListRegionInstanceGroupManagerResizeRequestsRequest(proto.Message): Name of the region scoping this request. Name should conform to RFC1035. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91219,11 +89724,6 @@ class ListRegionInstanceGroupManagerResizeRequestsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceGroupManagersRequest(proto.Message): @@ -91341,17 +89841,6 @@ class ListRegionInstanceGroupManagersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91382,11 +89871,6 @@ class ListRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceGroupsRequest(proto.Message): @@ -91504,17 +89988,6 @@ class ListRegionInstanceGroupsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91545,11 +90018,6 @@ class ListRegionInstanceGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceTemplatesRequest(proto.Message): @@ -91667,17 +90135,6 @@ class ListRegionInstanceTemplatesRequest(proto.Message): Project ID for this request. region (str): The name of the regions for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91708,11 +90165,6 @@ class ListRegionInstanceTemplatesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstantSnapshotGroupsRequest(proto.Message): @@ -91830,17 +90282,6 @@ class ListRegionInstantSnapshotGroupsRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91871,11 +90312,6 @@ class ListRegionInstantSnapshotGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstantSnapshotsRequest(proto.Message): @@ -91993,17 +90429,6 @@ class ListRegionInstantSnapshotsRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92034,11 +90459,6 @@ class ListRegionInstantSnapshotsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionNetworkEndpointGroupsRequest(proto.Message): @@ -92158,17 +90578,6 @@ class ListRegionNetworkEndpointGroupsRequest(proto.Message): 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( @@ -92199,11 +90608,6 @@ class ListRegionNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionNetworkFirewallPoliciesRequest(proto.Message): @@ -92321,17 +90725,6 @@ class ListRegionNetworkFirewallPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92362,11 +90755,6 @@ class ListRegionNetworkFirewallPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionNotificationEndpointsRequest(proto.Message): @@ -92484,17 +90872,6 @@ class ListRegionNotificationEndpointsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92525,11 +90902,6 @@ class ListRegionNotificationEndpointsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionOperationsRequest(proto.Message): @@ -92647,17 +91019,6 @@ class ListRegionOperationsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -92688,11 +91049,6 @@ class ListRegionOperationsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSecurityPoliciesRequest(proto.Message): @@ -92810,17 +91166,6 @@ class ListRegionSecurityPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92851,11 +91196,6 @@ class ListRegionSecurityPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSnapshotsRequest(proto.Message): @@ -92973,17 +91313,6 @@ class ListRegionSnapshotsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -93014,11 +91343,6 @@ class ListRegionSnapshotsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSslCertificatesRequest(proto.Message): @@ -93136,17 +91460,6 @@ class ListRegionSslCertificatesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93177,11 +91490,6 @@ class ListRegionSslCertificatesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSslPoliciesRequest(proto.Message): @@ -93299,17 +91607,6 @@ class ListRegionSslPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93340,11 +91637,6 @@ class ListRegionSslPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionTargetHttpProxiesRequest(proto.Message): @@ -93462,17 +91754,6 @@ class ListRegionTargetHttpProxiesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93503,11 +91784,6 @@ class ListRegionTargetHttpProxiesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionTargetHttpsProxiesRequest(proto.Message): @@ -93625,17 +91901,6 @@ class ListRegionTargetHttpsProxiesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93666,11 +91931,6 @@ class ListRegionTargetHttpsProxiesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionTargetTcpProxiesRequest(proto.Message): @@ -93788,17 +92048,6 @@ class ListRegionTargetTcpProxiesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93829,11 +92078,6 @@ class ListRegionTargetTcpProxiesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionUrlMapsRequest(proto.Message): @@ -93951,17 +92195,6 @@ class ListRegionUrlMapsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93992,11 +92225,6 @@ class ListRegionUrlMapsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionZonesRequest(proto.Message): @@ -94114,17 +92342,6 @@ class ListRegionZonesRequest(proto.Message): Project ID for this request. region (str): 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``. """ filter: str = proto.Field( @@ -94155,11 +92372,6 @@ class ListRegionZonesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionsRequest(proto.Message): @@ -94275,17 +92487,6 @@ class ListRegionsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -94312,11 +92513,6 @@ class ListRegionsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListReliabilityRisksRequest(proto.Message): @@ -94432,17 +92628,6 @@ class ListReliabilityRisksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -94469,11 +92654,6 @@ class ListReliabilityRisksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListReservationBlocksRequest(proto.Message): @@ -94593,17 +92773,6 @@ class ListReservationBlocksRequest(proto.Message): The name of the reservation. Name should conform to RFC1035 or be a resource ID. - 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``. zone (str): Name of the zone for this request. Zone name should conform to RFC1035. @@ -94637,11 +92806,6 @@ class ListReservationBlocksRequest(proto.Message): proto.STRING, number=47530956, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -94765,17 +92929,6 @@ class ListReservationSlotsRequest(proto.Message): reservations/{reservation_name}/reservationBlocks/{reservation_block_name}/reservationSubBlocks/{reservation_sub_block_name} project (str): The project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request, formatted as RFC1035. @@ -94809,11 +92962,6 @@ class ListReservationSlotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -94937,17 +93085,6 @@ class ListReservationSubBlocksRequest(proto.Message): reservations/{reservation_name}/reservationBlocks/{reservation_block_name} project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. Zone name should conform to RFC1035. @@ -94981,11 +93118,6 @@ class ListReservationSubBlocksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -95105,17 +93237,6 @@ class ListReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. """ @@ -95144,11 +93265,6 @@ class ListReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -95270,17 +93386,6 @@ class ListResourcePoliciesRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -95311,11 +93416,6 @@ class ListResourcePoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRolloutPlansRequest(proto.Message): @@ -95431,17 +93531,6 @@ class ListRolloutPlansRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -95468,11 +93557,6 @@ class ListRolloutPlansRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRolloutsRequest(proto.Message): @@ -95588,17 +93672,6 @@ class ListRolloutsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -95625,11 +93698,6 @@ class ListRolloutsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRoutePoliciesRoutersRequest(proto.Message): @@ -95747,17 +93815,6 @@ class ListRoutePoliciesRoutersRequest(proto.Message): 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``. router (str): Name or id of the resource for this request. Name should conform to RFC1035. @@ -95791,11 +93848,6 @@ class ListRoutePoliciesRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) router: str = proto.Field( proto.STRING, number=148608841, @@ -95917,17 +93969,6 @@ class ListRoutersRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -95958,11 +93999,6 @@ class ListRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRoutesRequest(proto.Message): @@ -96078,17 +94114,6 @@ class ListRoutesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96115,11 +94140,6 @@ class ListRoutesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSecurityPoliciesRequest(proto.Message): @@ -96235,17 +94255,6 @@ class ListSecurityPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96272,11 +94281,6 @@ class ListSecurityPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListServiceAttachmentsRequest(proto.Message): @@ -96394,17 +94398,6 @@ class ListServiceAttachmentsRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96435,11 +94428,6 @@ class ListServiceAttachmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSnapshotsRequest(proto.Message): @@ -96555,17 +94543,6 @@ class ListSnapshotsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96592,11 +94569,6 @@ class ListSnapshotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSslCertificatesRequest(proto.Message): @@ -96712,17 +94684,6 @@ class ListSslCertificatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96749,11 +94710,6 @@ class ListSslCertificatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSslPoliciesRequest(proto.Message): @@ -96869,17 +94825,6 @@ class ListSslPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96906,11 +94851,6 @@ class ListSslPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListStoragePoolTypesRequest(proto.Message): @@ -97026,17 +94966,6 @@ class ListStoragePoolTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -97065,11 +94994,6 @@ class ListStoragePoolTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -97189,17 +95113,6 @@ class ListStoragePoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -97228,11 +95141,6 @@ class ListStoragePoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -97354,17 +95262,6 @@ class ListSubnetworksRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. views (str): Defines the extra views returned back in the subnetwork resource. Supported values: @@ -97430,11 +95327,6 @@ class Views(proto.Enum): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) views: str = proto.Field( proto.STRING, number=112204398, @@ -97555,17 +95447,6 @@ class ListTargetGrpcProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -97592,11 +95473,6 @@ class ListTargetGrpcProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetHttpProxiesRequest(proto.Message): @@ -97712,17 +95588,6 @@ class ListTargetHttpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -97749,11 +95614,6 @@ class ListTargetHttpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetHttpsProxiesRequest(proto.Message): @@ -97869,17 +95729,6 @@ class ListTargetHttpsProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -97906,11 +95755,6 @@ class ListTargetHttpsProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetInstancesRequest(proto.Message): @@ -98026,17 +95870,6 @@ class ListTargetInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone scoping this request. """ @@ -98065,11 +95898,6 @@ class ListTargetInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -98191,17 +96019,6 @@ class ListTargetPoolsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98232,11 +96049,6 @@ class ListTargetPoolsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetSslProxiesRequest(proto.Message): @@ -98352,17 +96164,6 @@ class ListTargetSslProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98389,11 +96190,6 @@ class ListTargetSslProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetTcpProxiesRequest(proto.Message): @@ -98509,17 +96305,6 @@ class ListTargetTcpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98546,11 +96331,6 @@ class ListTargetTcpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetVpnGatewaysRequest(proto.Message): @@ -98668,17 +96448,6 @@ class ListTargetVpnGatewaysRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -98709,11 +96478,6 @@ class ListTargetVpnGatewaysRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUrlMapsRequest(proto.Message): @@ -98829,17 +96593,6 @@ class ListUrlMapsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98866,11 +96619,6 @@ class ListUrlMapsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableBackendBucketsRequest(proto.Message): @@ -98986,17 +96734,6 @@ class ListUsableBackendBucketsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -99023,11 +96760,6 @@ class ListUsableBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableBackendServicesRequest(proto.Message): @@ -99143,17 +96875,6 @@ class ListUsableBackendServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -99180,11 +96901,6 @@ class ListUsableBackendServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableRegionBackendBucketsRequest(proto.Message): @@ -99304,17 +97020,6 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): 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 - 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( @@ -99345,11 +97050,6 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableRegionBackendServicesRequest(proto.Message): @@ -99469,17 +97169,6 @@ class ListUsableRegionBackendServicesRequest(proto.Message): 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 - 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( @@ -99510,11 +97199,6 @@ class ListUsableRegionBackendServicesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableSubnetworksRequest(proto.Message): @@ -99630,17 +97314,6 @@ class ListUsableSubnetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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 @@ -99674,11 +97347,6 @@ class ListUsableSubnetworksRequest(proto.Message): 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, @@ -99801,17 +97469,6 @@ class ListVpnGatewaysRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -99842,11 +97499,6 @@ class ListVpnGatewaysRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListVpnTunnelsRequest(proto.Message): @@ -99964,17 +97616,6 @@ class ListVpnTunnelsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -100005,11 +97646,6 @@ class ListVpnTunnelsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListWireGroupsRequest(proto.Message): @@ -100127,17 +97763,6 @@ class ListWireGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. """ cross_site_network: str = proto.Field( @@ -100168,11 +97793,6 @@ class ListWireGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListXpnHostsProjectsRequest(proto.Message): @@ -100290,17 +97910,6 @@ class ListXpnHostsProjectsRequest(proto.Message): Project ID for this request. projects_list_xpn_hosts_request_resource (google.cloud.compute_v1.types.ProjectsListXpnHostsRequest): The body resource for this request - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -100334,11 +97943,6 @@ class ListXpnHostsProjectsRequest(proto.Message): message="ProjectsListXpnHostsRequest", ) ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListZoneOperationsRequest(proto.Message): @@ -100454,17 +98058,6 @@ class ListZoneOperationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for request. """ @@ -100493,11 +98086,6 @@ class ListZoneOperationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -100617,17 +98205,6 @@ class ListZoneVmExtensionPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. """ @@ -100656,11 +98233,6 @@ class ListZoneVmExtensionPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -100780,17 +98352,6 @@ class ListZonesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -100817,11 +98378,6 @@ class ListZonesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class LocalDisk(proto.Message): @@ -102369,18 +99925,35 @@ class ManagedInstancePropertiesFromFlexibilityPolicy(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + disks (MutableSequence[google.cloud.compute_v1.types.AttachedDisk]): + List of disks to be attached to the instance. machine_type (str): Output only. The machine type to be used for this instance. This field is a member of `oneof`_ ``_machine_type``. + min_cpu_platform (str): + Name of the minimum CPU platform to be used + by this instance. e.g. 'Intel Ice Lake'. + + This field is a member of `oneof`_ ``_min_cpu_platform``. """ + disks: MutableSequence["AttachedDisk"] = proto.RepeatedField( + proto.MESSAGE, + number=95594102, + message="AttachedDisk", + ) machine_type: str = proto.Field( proto.STRING, number=227711026, optional=True, ) + min_cpu_platform: str = proto.Field( + proto.STRING, + number=242912759, + optional=True, + ) class ManagedInstanceScheduling(proto.Message): @@ -102477,6 +100050,150 @@ class ManagedInstanceVersion(proto.Message): ) +class ManagedRuleset(proto.Message): + r"""Represents a ManagedRuleset resource. + + Managed internally by Cloud Armor CLH for Managed Rules + features. Customers can only view these resources to modify + their Security Policies. For more information, see + https://cloud.google.com/armor/docs/. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + change_log (str): + Output only. [Output Only] The change log for this managed + ruleset. + + This field is a member of `oneof`_ ``_change_log``. + creation_timestamp (str): + Output only. [Output Only] Creation timestamp in RFC3339 + text format. + + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + [Output Only] An optional description of this 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``. + name (str): + Name of the resource. Generated internally 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``. + rule_ids (MutableSequence[str]): + Output only. [Output Only] The list of managed rule IDs that + are included in this managed ruleset. + ruleset_id (str): + Output only. [Output Only] The managed ruleset identifier + that can be configured in Security Policy rules. + + This field is a member of `oneof`_ ``_ruleset_id``. + self_link (str): + Output only. [Output Only] Server-defined URL for the + resource. + + This field is a member of `oneof`_ ``_self_link``. + """ + + change_log: str = proto.Field( + proto.STRING, + number=15896117, + optional=True, + ) + creation_timestamp: str = proto.Field( + proto.STRING, + number=30525366, + optional=True, + ) + description: str = proto.Field( + proto.STRING, + number=422937596, + optional=True, + ) + id: int = proto.Field( + proto.UINT64, + number=3355, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + rule_ids: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=226918133, + ) + ruleset_id: str = proto.Field( + proto.STRING, + number=131214356, + optional=True, + ) + self_link: str = proto.Field( + proto.STRING, + number=456214797, + optional=True, + ) + + +class ManagedRulesetList(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + id (str): + + This field is a member of `oneof`_ ``_id``. + items (MutableSequence[google.cloud.compute_v1.types.ManagedRuleset]): + The list of managed rulesets. + next_page_token (str): + + This field is a member of `oneof`_ ``_next_page_token``. + warning (google.cloud.compute_v1.types.Warning): + + This field is a member of `oneof`_ ``_warning``. + """ + + @property + def raw_page(self): + return self + + id: str = proto.Field( + proto.STRING, + number=3355, + optional=True, + ) + items: MutableSequence["ManagedRuleset"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="ManagedRuleset", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=79797525, + optional=True, + ) + warning: "Warning" = proto.Field( + proto.MESSAGE, + number=50704284, + optional=True, + message="Warning", + ) + + class Metadata(proto.Message): r"""A metadata key/value entry. @@ -102838,6 +100555,8 @@ class MoveFirewallPolicyRequest(proto.Message): be "folders/[FOLDER_ID]" if the parent is a folder or "organizations/[ORGANIZATION_ID]" if the parent is an organization. + + This field is a member of `oneof`_ ``_parent_id``. request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -102869,6 +100588,7 @@ class MoveFirewallPolicyRequest(proto.Message): parent_id: str = proto.Field( proto.STRING, number=459714768, + optional=True, ) request_id: str = proto.Field( proto.STRING, @@ -105690,14 +103410,11 @@ class Ipv6AccessType(proto.Enum): INTERNAL (279295677): This network interface can have internal IPv6. - UNSPECIFIED_IPV6_ACCESS_TYPE (313080613): - No description available. """ UNDEFINED_IPV6_ACCESS_TYPE = 0 EXTERNAL = 35607499 INTERNAL = 279295677 - UNSPECIFIED_IPV6_ACCESS_TYPE = 313080613 class NicType(proto.Enum): r"""The type of vNIC to be used on this interface. This may be @@ -105750,15 +103467,12 @@ class StackType(proto.Enum): IPV6_ONLY (79632100): The network interface will only be assigned IPv6 addresses. - UNSPECIFIED_STACK_TYPE (298084569): - No description available. """ UNDEFINED_STACK_TYPE = 0 IPV4_IPV6 = 22197249 IPV4_ONLY = 22373798 IPV6_ONLY = 79632100 - UNSPECIFIED_STACK_TYPE = 298084569 access_configs: MutableSequence["AccessConfig"] = proto.RepeatedField( proto.MESSAGE, @@ -106593,9 +104307,6 @@ class NetworkProfile(proto.Message): resource with the resource id. This field is a member of `oneof`_ ``_self_link_with_id``. - zone (str): - - This field is a member of `oneof`_ ``_zone``. """ creation_timestamp: str = proto.Field( @@ -106651,11 +104362,6 @@ class NetworkProfile(proto.Message): number=44520962, optional=True, ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - optional=True, - ) class NetworkProfileLocation(proto.Message): @@ -112083,6 +109789,71 @@ class PacketMirroringsScopedList(proto.Message): ) +class PatchAssociationRegionNetworkFirewallPolicyRequest(proto.Message): + r"""A request message for + RegionNetworkFirewallPolicies.PatchAssociation. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + firewall_policy (str): + Name of the firewall policy to update. + firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): + The body resource for this request + project (str): + Project ID for this request. + region (str): + Name of the region scoping this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + firewall_policy: str = proto.Field( + proto.STRING, + number=498173265, + ) + firewall_policy_association_resource: "FirewallPolicyAssociation" = proto.Field( + proto.MESSAGE, + number=259546170, + message="FirewallPolicyAssociation", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + class PatchAutoscalerRequest(proto.Message): r"""A request message for Autoscalers.Patch. See the method description for details. @@ -112246,79 +110017,199 @@ class PatchBackendServiceRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - backend_service: str = proto.Field( - proto.STRING, - number=306946058, - ) - backend_service_resource: "BackendService" = proto.Field( - proto.MESSAGE, - number=347586723, - message="BackendService", - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - request_id: str = proto.Field( - proto.STRING, - number=37109963, - optional=True, - ) - - -class PatchCrossSiteNetworkRequest(proto.Message): - r"""A request message for CrossSiteNetworks.Patch. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - cross_site_network (str): - Name of the cross-site network to update. - cross_site_network_resource (google.cloud.compute_v1.types.CrossSiteNetwork): - The body resource for this request - project (str): - Project ID for this request. - request_id (str): - An optional request ID to identify requests. Specify a - unique request ID so that if you must retry your request, - the server will know to ignore the request if it has already - been completed. - - For example, consider a situation where you make an initial - request and the request times out. If you make the request - again with the same request ID, the server can check if - original operation with the same request ID was received, - and if so, will ignore the second request. This prevents - clients from accidentally creating duplicate commitments. - - The request ID must be a valid UUID with the exception that - zero UUID is not supported - (00000000-0000-0000-0000-000000000000). end_interface: - MixerMutationRequestBuilder - - This field is a member of `oneof`_ ``_request_id``. - update_mask (str): - update_mask indicates fields to be updated as part of this - request. - - This field is a member of `oneof`_ ``_update_mask``. - validate_only (bool): - [Input Only] Validate the new configuration, but don't - update it. - - This field is a member of `oneof`_ ``_validate_only``. - """ - - cross_site_network: str = proto.Field( + backend_service: str = proto.Field( + proto.STRING, + number=306946058, + ) + backend_service_resource: "BackendService" = proto.Field( + proto.MESSAGE, + number=347586723, + message="BackendService", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + +class PatchCrossSiteNetworkRequest(proto.Message): + r"""A request message for CrossSiteNetworks.Patch. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + cross_site_network (str): + Name of the cross-site network to update. + cross_site_network_resource (google.cloud.compute_v1.types.CrossSiteNetwork): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. Specify a + unique request ID so that if you must retry your request, + the server will know to ignore the request if it has already + been completed. + + For example, consider a situation where you make an initial + request and the request times out. If you make the request + again with the same request ID, the server can check if + original operation with the same request ID was received, + and if so, will ignore the second request. This prevents + clients from accidentally creating duplicate commitments. + + The request ID must be a valid UUID with the exception that + zero UUID is not supported + (00000000-0000-0000-0000-000000000000). end_interface: + MixerMutationRequestBuilder + + This field is a member of `oneof`_ ``_request_id``. + update_mask (str): + update_mask indicates fields to be updated as part of this + request. + + This field is a member of `oneof`_ ``_update_mask``. + validate_only (bool): + [Input Only] Validate the new configuration, but don't + update it. + + This field is a member of `oneof`_ ``_validate_only``. + """ + + cross_site_network: str = proto.Field( + proto.STRING, + number=108192469, + ) + cross_site_network_resource: "CrossSiteNetwork" = proto.Field( + proto.MESSAGE, + number=30896696, + message="CrossSiteNetwork", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + update_mask: str = proto.Field( + proto.STRING, + number=500079778, + optional=True, + ) + validate_only: bool = proto.Field( + proto.BOOL, + number=242744629, + optional=True, + ) + + +class PatchFirewallPolicyRequest(proto.Message): + r"""A request message for FirewallPolicies.Patch. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + firewall_policy (str): + Name of the firewall policy to update. + firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy): + The body resource for this request + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + firewall_policy: str = proto.Field( + proto.STRING, + number=498173265, + ) + firewall_policy_resource: "FirewallPolicy" = proto.Field( + proto.MESSAGE, + number=495049532, + message="FirewallPolicy", + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + +class PatchFirewallRequest(proto.Message): + r"""A request message for Firewalls.Patch. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + firewall (str): + Name of the firewall rule to patch. + firewall_resource (google.cloud.compute_v1.types.Firewall): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + firewall: str = proto.Field( proto.STRING, - number=108192469, + number=511016192, ) - cross_site_network_resource: "CrossSiteNetwork" = proto.Field( + firewall_resource: "Firewall" = proto.Field( proto.MESSAGE, - number=30896696, - message="CrossSiteNetwork", + number=41425005, + message="Firewall", ) project: str = proto.Field( proto.STRING, @@ -112329,84 +110220,24 @@ class PatchCrossSiteNetworkRequest(proto.Message): number=37109963, optional=True, ) - update_mask: str = proto.Field( - proto.STRING, - number=500079778, - optional=True, - ) - validate_only: bool = proto.Field( - proto.BOOL, - number=242744629, - optional=True, - ) - - -class PatchFirewallPolicyRequest(proto.Message): - r"""A request message for FirewallPolicies.Patch. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - firewall_policy (str): - Name of the firewall policy to update. - firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy): - The body resource for this request - request_id (str): - An optional request ID to identify requests. - Specify a unique request ID so that if you must - retry your request, the server will know to - ignore the request if it has already been - completed. - - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). - - This field is a member of `oneof`_ ``_request_id``. - """ - - firewall_policy: str = proto.Field( - proto.STRING, - number=498173265, - ) - firewall_policy_resource: "FirewallPolicy" = proto.Field( - proto.MESSAGE, - number=495049532, - message="FirewallPolicy", - ) - request_id: str = proto.Field( - proto.STRING, - number=37109963, - optional=True, - ) -class PatchFirewallRequest(proto.Message): - r"""A request message for Firewalls.Patch. See the method +class PatchForwardingRuleRequest(proto.Message): + r"""A request message for ForwardingRules.Patch. See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - firewall (str): - Name of the firewall rule to patch. - firewall_resource (google.cloud.compute_v1.types.Firewall): + forwarding_rule (str): + Name of the ForwardingRule resource to patch. + forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule): The body resource for this request project (str): Project ID for this request. + region (str): + Name of the region scoping this request. request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -112431,19 +110262,23 @@ class PatchFirewallRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - firewall: str = proto.Field( + forwarding_rule: str = proto.Field( proto.STRING, - number=511016192, + number=269964030, ) - firewall_resource: "Firewall" = proto.Field( + forwarding_rule_resource: "ForwardingRule" = proto.Field( proto.MESSAGE, - number=41425005, - message="Firewall", + number=301211695, + message="ForwardingRule", ) project: str = proto.Field( proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) request_id: str = proto.Field( proto.STRING, number=37109963, @@ -112451,9 +110286,9 @@ class PatchFirewallRequest(proto.Message): ) -class PatchForwardingRuleRequest(proto.Message): - r"""A request message for ForwardingRules.Patch. See the method - description for details. +class PatchGlobalForwardingRuleRequest(proto.Message): + r"""A request message for GlobalForwardingRules.Patch. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -112465,8 +110300,6 @@ class PatchForwardingRuleRequest(proto.Message): The body resource for this request project (str): Project ID for this request. - region (str): - Name of the region scoping this request. request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -112504,10 +110337,6 @@ class PatchForwardingRuleRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) request_id: str = proto.Field( proto.STRING, number=37109963, @@ -112515,52 +110344,32 @@ class PatchForwardingRuleRequest(proto.Message): ) -class PatchGlobalForwardingRuleRequest(proto.Message): - r"""A request message for GlobalForwardingRules.Patch. See the - method description for details. +class PatchGlobalFrontendSettingRequest(proto.Message): + r"""A request message for GlobalFrontendSettingsService.Patch. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - forwarding_rule (str): - Name of the ForwardingRule resource to patch. - forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule): + global_frontend_settings_resource (google.cloud.compute_v1.types.GlobalFrontendSettings): The body resource for this request project (str): - Project ID for this request. + Required. Project ID for this request. request_id (str): An optional request ID to identify requests. - Specify a unique request ID so that if you must - retry your request, the server will know to - ignore the request if it has already been - completed. - - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. + update_mask (str): + Field mask to support patch. E.g., "type". + + This field is a member of `oneof`_ ``_update_mask``. """ - forwarding_rule: str = proto.Field( - proto.STRING, - number=269964030, - ) - forwarding_rule_resource: "ForwardingRule" = proto.Field( + global_frontend_settings_resource: "GlobalFrontendSettings" = proto.Field( proto.MESSAGE, - number=301211695, - message="ForwardingRule", + number=233377241, + message="GlobalFrontendSettings", ) project: str = proto.Field( proto.STRING, @@ -112571,6 +110380,11 @@ class PatchGlobalForwardingRuleRequest(proto.Message): number=37109963, optional=True, ) + update_mask: str = proto.Field( + proto.STRING, + number=500079778, + optional=True, + ) class PatchGlobalPublicDelegatedPrefixeRequest(proto.Message): @@ -117260,9 +115074,6 @@ class Policy(proto.Message): the conditions in the version ``3`` policy are lost. This field is a member of `oneof`_ ``_etag``. - iam_owned (bool): - - This field is a member of `oneof`_ ``_iam_owned``. version (int): Specifies the format of the policy. @@ -117311,11 +115122,6 @@ class Policy(proto.Message): number=3123477, optional=True, ) - iam_owned: bool = proto.Field( - proto.BOOL, - number=450566203, - optional=True, - ) version: int = proto.Field( proto.INT32, number=351608024, @@ -126326,6 +124132,15 @@ class Behavior(proto.Enum): No description available. GPU_ERROR (198817909): The subBlock experienced a GPU error. + NVSWITCH_FAULT_CONTROLLER_ERROR (250941637): + The subBlock experienced an NVSwitch + controller error. + NVSWITCH_FAULT_DEGRADED_BANDWIDTH (202741248): + The subBlock experienced NVSwitch degraded + bandwidth. + NVSWITCH_FAULT_SWITCH_ERROR (287636061): + The subBlock experienced an NVSwitch switch + error. PERFORMANCE (135701520): The subBlock experienced performance issues. SILENT_DATA_CORRUPTION (111360678): @@ -126338,6 +124153,9 @@ class Behavior(proto.Enum): UNDEFINED_BEHAVIOR = 0 FAULT_BEHAVIOR_UNSPECIFIED = 447660743 GPU_ERROR = 198817909 + NVSWITCH_FAULT_CONTROLLER_ERROR = 250941637 + NVSWITCH_FAULT_DEGRADED_BANDWIDTH = 202741248 + NVSWITCH_FAULT_SWITCH_ERROR = 287636061 PERFORMANCE = 135701520 SILENT_DATA_CORRUPTION = 111360678 SWITCH_FAILURE = 254909279 @@ -132889,11 +130707,16 @@ class RouterNatRule(proto.Message): ``destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'`` - The following example is a valid match expression for + The following examples are valid match expressions for private NAT: + (NAT 44) ``nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'`` + ``nexthop.is_hybrid`` + + (NAT 64) ``isIPv6(source.ip)`` + This field is a member of `oneof`_ ``_match``. rule_number (int): An integer uniquely identifying a rule in the @@ -136703,6 +134526,10 @@ class SecurityPolicyRulePreconfiguredWafConfigExclusion(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + request_bodies_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]): + A list of request body fields to be excluded + from inspection during preconfigured WAF + evaluation. request_cookies_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]): A list of request cookie names whose value will be excluded from inspection during @@ -136735,6 +134562,13 @@ class SecurityPolicyRulePreconfiguredWafConfigExclusion(proto.Message): This field is a member of `oneof`_ ``_target_rule_set``. """ + request_bodies_to_exclude: MutableSequence[ + "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams" + ] = proto.RepeatedField( + proto.MESSAGE, + number=60453445, + message="SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams", + ) request_cookies_to_exclude: MutableSequence[ "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams" ] = proto.RepeatedField( @@ -141769,6 +139603,66 @@ class SetNameInstanceRequest(proto.Message): ) +class SetNameInterconnectRequest(proto.Message): + r"""A request message for Interconnects.SetName. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + interconnect (str): + Name of the interconnect to update. + interconnects_set_name_request_resource (google.cloud.compute_v1.types.InterconnectsSetNameRequest): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + interconnect: str = proto.Field( + proto.STRING, + number=224601230, + ) + interconnects_set_name_request_resource: "InterconnectsSetNameRequest" = ( + proto.Field( + proto.MESSAGE, + number=316267707, + message="InterconnectsSetNameRequest", + ) + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + class SetNamedPortsInstanceGroupRequest(proto.Message): r"""A request message for InstanceGroups.SetNamedPorts. See the method description for details. @@ -149072,14 +146966,11 @@ class Ipv6AccessType(proto.Enum): VMs on this subnet will be assigned IPv6 addresses that are only accessible over the VPC network. - UNSPECIFIED_IPV6_ACCESS_TYPE (313080613): - No description available. """ UNDEFINED_IPV6_ACCESS_TYPE = 0 EXTERNAL = 35607499 INTERNAL = 279295677 - UNSPECIFIED_IPV6_ACCESS_TYPE = 313080613 class Ipv6GceEndpoint(proto.Enum): r"""Output only. [Output Only] Possible endpoints of this subnetwork. It @@ -149258,15 +147149,12 @@ class StackType(proto.Enum): IPV6_ONLY (79632100): New VMs in this subnet will only be assigned IPv6 addresses. - UNSPECIFIED_STACK_TYPE (298084569): - No description available. """ UNDEFINED_STACK_TYPE = 0 IPV4_IPV6 = 22197249 IPV4_ONLY = 22373798 IPV6_ONLY = 79632100 - UNSPECIFIED_STACK_TYPE = 298084569 class State(proto.Enum): r"""Output only. [Output Only] The state of the subnetwork, which can be @@ -162438,7 +160326,7 @@ class WaitZoneOperationRequest(proto.Message): class Warning(proto.Message): - r"""Informational warning message. + r""" .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_insert_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_insert_sync.py index f340785ece37..c22e42cfc598 100644 --- a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_insert_sync.py +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_insert_sync.py @@ -39,9 +39,7 @@ def sample_insert(): client = compute_v1.FirewallPoliciesClient() # Initialize request argument(s) - request = compute_v1.InsertFirewallPolicyRequest( - parent_id="parent_id_value", - ) + request = compute_v1.InsertFirewallPolicyRequest() # Make the request response = client.insert(request=request) diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_move_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_move_sync.py index 24d479b86c1f..d3be6fdfbbad 100644 --- a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_move_sync.py +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_firewall_policies_move_sync.py @@ -41,7 +41,6 @@ def sample_move(): # Initialize request argument(s) request = compute_v1.MoveFirewallPolicyRequest( firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) # Make the request diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py new file mode 100644 index 000000000000..7b9339a7405b --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_GlobalFrontendSettingsService_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.GetGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_GlobalFrontendSettingsService_Get_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py new file mode 100644 index 000000000000..034c0e42f741 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 Patch +# 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 + + +# [START compute_v1_generated_GlobalFrontendSettingsService_Patch_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_v1 + + +def sample_patch(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.PatchGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_GlobalFrontendSettingsService_Patch_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py new file mode 100644 index 000000000000..f64365130a82 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ImageViews_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.GetImageViewRequest( + project="project_value", + region="region_value", + resource_id="resource_id_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_ImageViews_Get_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py new file mode 100644 index 000000000000..081ff4f67af6 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ImageViews_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.ListImageViewsRequest( + 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) + + +# [END compute_v1_generated_ImageViews_List_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py new file mode 100644 index 000000000000..86e99c74f105 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 SetName +# 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 + + +# [START compute_v1_generated_Interconnects_SetName_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_v1 + + +def sample_set_name(): + # Create a client + client = compute_v1.InterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.SetNameInterconnectRequest( + interconnect="interconnect_value", + project="project_value", + ) + + # Make the request + response = client.set_name(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_Interconnects_SetName_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py new file mode 100644 index 000000000000..a40ed0a0efc2 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ManagedRulesets_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.GetManagedRulesetRequest( + managed_ruleset="managed_ruleset_value", + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_ManagedRulesets_Get_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py new file mode 100644 index 000000000000..83365328a9d9 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ManagedRulesets_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.ListManagedRulesetsRequest( + project="project_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1_generated_ManagedRulesets_List_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py new file mode 100644 index 000000000000..b8fd31d8bae3 --- /dev/null +++ b/packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 PatchAssociation +# 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 + + +# [START compute_v1_generated_RegionNetworkFirewallPolicies_PatchAssociation_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_v1 + + +def sample_patch_association(): + # Create a client + client = compute_v1.RegionNetworkFirewallPoliciesClient() + + # Initialize request argument(s) + request = compute_v1.PatchAssociationRegionNetworkFirewallPolicyRequest( + firewall_policy="firewall_policy_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch_association(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_RegionNetworkFirewallPolicies_PatchAssociation_sync] diff --git a/packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json b/packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json index 2936d512f86c..240af3179ad2 100644 --- a/packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json +++ b/packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json @@ -8208,10 +8208,6 @@ "name": "request", "type": "google.cloud.compute_v1.types.InsertFirewallPolicyRequest" }, - { - "name": "parent_id", - "type": "str" - }, { "name": "firewall_policy_resource", "type": "google.cloud.compute_v1.types.FirewallPolicy" @@ -8239,12 +8235,12 @@ "regionTag": "compute_v1_generated_FirewallPolicies_Insert_sync", "segments": [ { - "end": 51, + "end": 50, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 50, "start": 27, "type": "SHORT" }, @@ -8254,18 +8250,18 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 44, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 47, + "start": 45, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 51, + "start": 48, "type": "RESPONSE_HANDLING" } ], @@ -8448,10 +8444,6 @@ "name": "firewall_policy", "type": "str" }, - { - "name": "parent_id", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -8475,12 +8467,12 @@ "regionTag": "compute_v1_generated_FirewallPolicies_Move_sync", "segments": [ { - "end": 52, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 51, "start": 27, "type": "SHORT" }, @@ -8490,18 +8482,18 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], @@ -12103,6 +12095,170 @@ ], "title": "compute_v1_generated_global_forwarding_rules_set_target_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient", + "shortName": "GlobalFrontendSettingsServiceClient" + }, + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient.get", + "method": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService.Get", + "service": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "shortName": "GlobalFrontendSettingsService" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetGlobalFrontendSettingRequest" + }, + { + "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_v1.types.GlobalFrontendSettings", + "shortName": "get" + }, + "description": "Sample for Get", + "file": "compute_v1_generated_global_frontend_settings_service_get_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_GlobalFrontendSettingsService_Get_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_v1_generated_global_frontend_settings_service_get_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient", + "shortName": "GlobalFrontendSettingsServiceClient" + }, + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient.patch", + "method": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService.Patch", + "service": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "shortName": "GlobalFrontendSettingsService" + }, + "shortName": "Patch" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.PatchGlobalFrontendSettingRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "global_frontend_settings_resource", + "type": "google.cloud.compute_v1.types.GlobalFrontendSettings" + }, + { + "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_v1.types.GlobalFrontendSettingsPatchResponse", + "shortName": "patch" + }, + "description": "Sample for Patch", + "file": "compute_v1_generated_global_frontend_settings_service_patch_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_GlobalFrontendSettingsService_Patch_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_v1_generated_global_frontend_settings_service_patch_sync.py" + }, { "canonical": true, "clientMethod": { @@ -15311,29 +15467,33 @@ "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.ImageViewsClient", + "shortName": "ImageViewsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.delete", + "fullName": "google.cloud.compute_v1.ImageViewsClient.get", "method": { - "fullName": "google.cloud.compute.v1.Images.Delete", + "fullName": "google.cloud.compute.v1.ImageViews.Get", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.ImageViews", + "shortName": "ImageViews" }, - "shortName": "Delete" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteImageRequest" + "type": "google.cloud.compute_v1.types.GetImageViewRequest" }, { "name": "project", "type": "str" }, { - "name": "image", + "name": "region", + "type": "str" + }, + { + "name": "resource_id", "type": "str" }, { @@ -15349,22 +15509,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.types.ImageView", + "shortName": "get" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_images_delete_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_image_views_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Delete_sync", + "regionTag": "compute_v1_generated_ImageViews_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -15374,56 +15534,52 @@ "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_v1_generated_images_delete_sync.py" + "title": "compute_v1_generated_image_views_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.ImageViewsClient", + "shortName": "ImageViewsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.deprecate", + "fullName": "google.cloud.compute_v1.ImageViewsClient.list", "method": { - "fullName": "google.cloud.compute.v1.Images.Deprecate", + "fullName": "google.cloud.compute.v1.ImageViews.List", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.ImageViews", + "shortName": "ImageViews" }, - "shortName": "Deprecate" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeprecateImageRequest" + "type": "google.cloud.compute_v1.types.ListImageViewsRequest" }, { "name": "project", "type": "str" }, { - "name": "image", + "name": "region", "type": "str" }, - { - "name": "deprecation_status_resource", - "type": "google.cloud.compute_v1.types.DeprecationStatus" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -15437,22 +15593,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "deprecate" + "resultType": "google.cloud.compute_v1.services.image_views.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Deprecate", - "file": "compute_v1_generated_images_deprecate_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_image_views_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Deprecate_sync", + "regionTag": "compute_v1_generated_ImageViews_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -15472,12 +15628,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_deprecate_sync.py" + "title": "compute_v1_generated_image_views_list_sync.py" }, { "canonical": true, @@ -15486,26 +15642,26 @@ "fullName": "google.cloud.compute_v1.ImagesClient", "shortName": "ImagesClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.get_from_family", + "fullName": "google.cloud.compute_v1.ImagesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Images.GetFromFamily", + "fullName": "google.cloud.compute.v1.Images.Delete", "service": { "fullName": "google.cloud.compute.v1.Images", "shortName": "Images" }, - "shortName": "GetFromFamily" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetFromFamilyImageRequest" + "type": "google.cloud.compute_v1.types.DeleteImageRequest" }, { "name": "project", "type": "str" }, { - "name": "family", + "name": "image", "type": "str" }, { @@ -15521,14 +15677,186 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Image", - "shortName": "get_from_family" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for GetFromFamily", - "file": "compute_v1_generated_images_get_from_family_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_images_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_GetFromFamily_sync", + "regionTag": "compute_v1_generated_Images_Delete_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_v1_generated_images_delete_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.deprecate", + "method": { + "fullName": "google.cloud.compute.v1.Images.Deprecate", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "Deprecate" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.DeprecateImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "image", + "type": "str" + }, + { + "name": "deprecation_status_resource", + "type": "google.cloud.compute_v1.types.DeprecationStatus" + }, + { + "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": "deprecate" + }, + "description": "Sample for Deprecate", + "file": "compute_v1_generated_images_deprecate_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_Deprecate_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_v1_generated_images_deprecate_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.get_from_family", + "method": { + "fullName": "google.cloud.compute.v1.Images.GetFromFamily", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "GetFromFamily" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetFromFamilyImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "family", + "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_v1.types.Image", + "shortName": "get_from_family" + }, + "description": "Sample for GetFromFamily", + "file": "compute_v1_generated_images_get_from_family_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_GetFromFamily_sync", "segments": [ { "end": 52, @@ -29859,6 +30187,94 @@ ], "title": "compute_v1_generated_interconnects_set_labels_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InterconnectsClient", + "shortName": "InterconnectsClient" + }, + "fullName": "google.cloud.compute_v1.InterconnectsClient.set_name", + "method": { + "fullName": "google.cloud.compute.v1.Interconnects.SetName", + "service": { + "fullName": "google.cloud.compute.v1.Interconnects", + "shortName": "Interconnects" + }, + "shortName": "SetName" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.SetNameInterconnectRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "interconnect", + "type": "str" + }, + { + "name": "interconnects_set_name_request_resource", + "type": "google.cloud.compute_v1.types.InterconnectsSetNameRequest" + }, + { + "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_name" + }, + "description": "Sample for SetName", + "file": "compute_v1_generated_interconnects_set_name_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Interconnects_SetName_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_v1_generated_interconnects_set_name_sync.py" + }, { "canonical": true, "clientMethod": { @@ -31815,6 +32231,170 @@ ], "title": "compute_v1_generated_machine_types_list_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient", + "shortName": "ManagedRulesetsClient" + }, + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient.get", + "method": { + "fullName": "google.cloud.compute.v1.ManagedRulesets.Get", + "service": { + "fullName": "google.cloud.compute.v1.ManagedRulesets", + "shortName": "ManagedRulesets" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetManagedRulesetRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "managed_ruleset", + "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_v1.types.ManagedRuleset", + "shortName": "get" + }, + "description": "Sample for Get", + "file": "compute_v1_generated_managed_rulesets_get_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_ManagedRulesets_Get_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_v1_generated_managed_rulesets_get_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient", + "shortName": "ManagedRulesetsClient" + }, + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient.list", + "method": { + "fullName": "google.cloud.compute.v1.ManagedRulesets.List", + "service": { + "fullName": "google.cloud.compute.v1.ManagedRulesets", + "shortName": "ManagedRulesets" + }, + "shortName": "List" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.ListManagedRulesetsRequest" + }, + { + "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_v1.services.managed_rulesets.pagers.ListPager", + "shortName": "list" + }, + "description": "Sample for List", + "file": "compute_v1_generated_managed_rulesets_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_ManagedRulesets_List_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_v1_generated_managed_rulesets_list_sync.py" + }, { "canonical": true, "clientMethod": { @@ -58175,6 +58755,98 @@ ], "title": "compute_v1_generated_region_network_firewall_policies_list_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.RegionNetworkFirewallPoliciesClient", + "shortName": "RegionNetworkFirewallPoliciesClient" + }, + "fullName": "google.cloud.compute_v1.RegionNetworkFirewallPoliciesClient.patch_association", + "method": { + "fullName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies.PatchAssociation", + "service": { + "fullName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies", + "shortName": "RegionNetworkFirewallPolicies" + }, + "shortName": "PatchAssociation" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.PatchAssociationRegionNetworkFirewallPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "firewall_policy", + "type": "str" + }, + { + "name": "firewall_policy_association_resource", + "type": "google.cloud.compute_v1.types.FirewallPolicyAssociation" + }, + { + "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_association" + }, + "description": "Sample for PatchAssociation", + "file": "compute_v1_generated_region_network_firewall_policies_patch_association_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_RegionNetworkFirewallPolicies_PatchAssociation_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_v1_generated_region_network_firewall_policies_patch_association_sync.py" + }, { "canonical": true, "clientMethod": { diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py index 55f1ba201753..d20f62c3ed96 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = AcceleratorTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.AcceleratorTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AcceleratorTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.AcceleratorType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AcceleratorTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AcceleratorTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -988,7 +1097,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1430,7 +1538,6 @@ def test_list_rest_required_fields(request_type=compute.ListAcceleratorTypesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py index e7c901935edb..4d0a8a2d20df 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.AddressAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Address() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AddressList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1243,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2150,7 +2425,6 @@ def test_list_rest_required_fields(request_type=compute.ListAddressesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py index 03a997a86080..455a9b04f52e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py @@ -55,6 +55,14 @@ from google.cloud.compute_v1.services.advice import AdviceClient, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,109 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_calendar_mode_api_version_header(transport_name): + client = AdviceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.calendar_mode), "__call__" + ) as call: + call.return_value = compute.CalendarModeAdviceResponse() + client.calendar_mode() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_capacity_api_version_header(transport_name): + client = AdviceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.capacity), "__call__") as call: + call.return_value = compute.CapacityAdviceResponse() + client.capacity() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_capacity_history_api_version_header(transport_name): + client = AdviceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.capacity_history), "__call__" + ) as call: + call.return_value = compute.CapacityHistoryResponse() + client.capacity_history() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1395,7 +1506,11 @@ def test_capacity_history_rest_flattened(): region="region_value", capacity_history_request_resource=compute.CapacityHistoryRequest( instance_properties=compute.CapacityHistoryRequestInstanceProperties( - machine_type="machine_type_value" + disks=[ + compute.CapacityHistoryRequestInstancePropertiesAttachedDisk( + type_="type__value" + ) + ] ) ), ) @@ -1439,7 +1554,11 @@ def test_capacity_history_rest_flattened_error(transport: str = "rest"): region="region_value", capacity_history_request_resource=compute.CapacityHistoryRequest( instance_properties=compute.CapacityHistoryRequestInstanceProperties( - machine_type="machine_type_value" + disks=[ + compute.CapacityHistoryRequestInstancePropertiesAttachedDisk( + type_="type__value" + ) + ] ) ), ) @@ -1981,6 +2100,13 @@ def test_capacity_history_rest_call_success(request_type): request_init = {"project": "sample1", "region": "sample2"} request_init["capacity_history_request_resource"] = { "instance_properties": { + "disks": [{"type_": "type__value"}], + "guest_accelerators": [ + { + "accelerator_count": 1805, + "accelerator_type": "accelerator_type_value", + } + ], "machine_type": "machine_type_value", "scheduling": {"provisioning_model": "provisioning_model_value"}, }, diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py index d4101856f737..d64f6a488f4e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.AutoscalerAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Autoscaler() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AutoscalerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2167,7 +2442,6 @@ def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py index 872c5edd0bd7..49b02f1d24ea 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,482 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_signed_url_key_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.BackendBucketAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_signed_url_key_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendBucket() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendBucketList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendBucketListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_edge_security_policy_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_edge_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_edge_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1349,7 +1833,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3095,7 +3578,6 @@ def test_list_rest_required_fields(request_type=compute.ListBackendBucketsReques "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3339,7 +3821,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4410,7 +4891,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -4452,7 +4937,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -6029,7 +6518,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -6048,7 +6536,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -7253,7 +7740,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -7274,20 +7760,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -7373,7 +7853,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -7392,7 +7871,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py index 719bd4c67b04..6e7b22f8d8e6 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,587 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_signed_url_key_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.BackendServiceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_signed_url_key_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_security_policies_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_security_policies), "__call__" + ) as call: + call.return_value = ( + compute.GetEffectiveSecurityPoliciesBackendServiceResponse() + ) + client.get_effective_security_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.BackendServiceGroupHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendServiceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendServiceListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_edge_security_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_edge_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_edge_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1363,7 +1952,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3477,7 +4065,6 @@ def test_list_rest_required_fields(request_type=compute.ListBackendServicesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3721,7 +4308,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4792,7 +5378,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -4834,7 +5424,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -7189,7 +7783,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -7208,7 +7801,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -8735,7 +9327,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -8756,20 +9347,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -8855,7 +9440,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -8874,7 +9458,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py index cffb0cfb301b..28621d756879 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.CrossSiteNetwork() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.CrossSiteNetworkList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1902,7 +2075,6 @@ def test_list_rest_required_fields(request_type=compute.ListCrossSiteNetworksReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py index fe8ecef6d206..f67eee62c625 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = DiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.DiskTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = DiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.DiskType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = DiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.DiskTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1076,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1404,7 +1512,6 @@ def test_list_rest_required_fields(request_type=compute.ListDiskTypesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py index 22761c2a3b44..391c3360d933 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.disks import DisksClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,690 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_resource_policies_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.DiskAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_set_labels_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.bulk_set_labels), "__call__" + ) as call: + call.return_value = compute.Operation() + client.bulk_set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_snapshot_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_snapshot), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_snapshot() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Disk() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.DiskList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_resource_policies_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_async_replication_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_async_replication_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_group_async_replication_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_group_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_group_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1356,7 +2048,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3905,7 +4596,6 @@ def test_list_rest_required_fields(request_type=compute.ListDisksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -5003,7 +5693,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -5046,7 +5740,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -9269,7 +9967,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -9288,7 +9985,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -10306,7 +11002,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -10327,20 +11022,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -10426,7 +11115,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -10445,7 +11133,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py index a23cc7f7a475..49cf5f0b93e4 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ExternalVpnGateway() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ExternalVpnGatewayList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1902,7 +2110,6 @@ def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysR "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py index 93856126f835..e71864f564a7 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,614 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_clone_rules_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.clone_rules), "__call__") as call: + call.return_value = compute.Operation() + client.clone_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FirewallPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.FirewallPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_associations_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_associations), "__call__" + ) as call: + call.return_value = compute.FirewallPoliciesListAssociationsResponse() + client.list_associations() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -3098,7 +3714,6 @@ def test_insert_rest_required_fields(request_type=compute.InsertFirewallPolicyRe transport_class = transports.FirewallPoliciesRestTransport request_init = {} - request_init["parent_id"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3106,7 +3721,6 @@ def test_insert_rest_required_fields(request_type=compute.InsertFirewallPolicyRe ) # verify fields with default values are dropped - assert "parentId" not in jsonified_request default_values = getattr( transport_class._BaseInsert, @@ -3119,10 +3733,6 @@ def test_insert_rest_required_fields(request_type=compute.InsertFirewallPolicyRe jsonified_request.update(unset_fields) # verify required fields with default values are now present - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == request_init["parent_id"] - - jsonified_request["parentId"] = "parent_id_value" # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( @@ -3133,8 +3743,6 @@ def test_insert_rest_required_fields(request_type=compute.InsertFirewallPolicyRe ) # verify required fields with non-default values are left alone - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == "parent_id_value" client = FirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3174,12 +3782,7 @@ def test_insert_rest_required_fields(request_type=compute.InsertFirewallPolicyRe response = client.insert(request) - expected_params = [ - ( - "parentId", - "", - ), - ] + expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -3200,7 +3803,6 @@ def test_insert_rest_flattened(): # get truthy value for each flattened field mock_args = dict( - parent_id="parent_id_value", firewall_policy_resource=compute.FirewallPolicy( associations=[ compute.FirewallPolicyAssociation( @@ -3244,7 +3846,6 @@ def test_insert_rest_flattened_error(transport: str = "rest"): with pytest.raises(ValueError): client.insert( compute.InsertFirewallPolicyRequest(), - parent_id="parent_id_value", firewall_policy_resource=compute.FirewallPolicy( associations=[ compute.FirewallPolicyAssociation( @@ -3301,7 +3902,6 @@ def test_insert_unary_rest_required_fields( transport_class = transports.FirewallPoliciesRestTransport request_init = {} - request_init["parent_id"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3309,7 +3909,6 @@ def test_insert_unary_rest_required_fields( ) # verify fields with default values are dropped - assert "parentId" not in jsonified_request default_values = getattr( transport_class._BaseInsert, @@ -3322,10 +3921,6 @@ def test_insert_unary_rest_required_fields( jsonified_request.update(unset_fields) # verify required fields with default values are now present - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == request_init["parent_id"] - - jsonified_request["parentId"] = "parent_id_value" # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( @@ -3336,8 +3931,6 @@ def test_insert_unary_rest_required_fields( ) # verify required fields with non-default values are left alone - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == "parent_id_value" client = FirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3377,12 +3970,7 @@ def test_insert_unary_rest_required_fields( response = client.insert_unary(request) - expected_params = [ - ( - "parentId", - "", - ), - ] + expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -3403,7 +3991,6 @@ def test_insert_unary_rest_flattened(): # get truthy value for each flattened field mock_args = dict( - parent_id="parent_id_value", firewall_policy_resource=compute.FirewallPolicy( associations=[ compute.FirewallPolicyAssociation( @@ -3447,7 +4034,6 @@ def test_insert_unary_rest_flattened_error(transport: str = "rest"): with pytest.raises(ValueError): client.insert_unary( compute.InsertFirewallPolicyRequest(), - parent_id="parent_id_value", firewall_policy_resource=compute.FirewallPolicy( associations=[ compute.FirewallPolicyAssociation( @@ -3641,7 +4227,6 @@ def test_move_rest_required_fields(request_type=compute.MoveFirewallPolicyReques request_init = {} request_init["firewall_policy"] = "" - request_init["parent_id"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3649,7 +4234,6 @@ def test_move_rest_required_fields(request_type=compute.MoveFirewallPolicyReques ) # verify fields with default values are dropped - assert "parentId" not in jsonified_request default_values = getattr( transport_class._BaseMove, @@ -3662,11 +4246,8 @@ def test_move_rest_required_fields(request_type=compute.MoveFirewallPolicyReques jsonified_request.update(unset_fields) # verify required fields with default values are now present - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == request_init["parent_id"] jsonified_request["firewallPolicy"] = "firewall_policy_value" - jsonified_request["parentId"] = "parent_id_value" # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( @@ -3679,8 +4260,6 @@ def test_move_rest_required_fields(request_type=compute.MoveFirewallPolicyReques # verify required fields with non-default values are left alone assert "firewallPolicy" in jsonified_request assert jsonified_request["firewallPolicy"] == "firewall_policy_value" - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == "parent_id_value" client = FirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3719,12 +4298,7 @@ def test_move_rest_required_fields(request_type=compute.MoveFirewallPolicyReques response = client.move(request) - expected_params = [ - ( - "parentId", - "", - ), - ] + expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -3746,7 +4320,6 @@ def test_move_rest_flattened(): # get truthy value for each flattened field mock_args = dict( firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) mock_args.update(sample_request) @@ -3785,7 +4358,6 @@ def test_move_rest_flattened_error(transport: str = "rest"): client.move( compute.MoveFirewallPolicyRequest(), firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) @@ -3836,7 +4408,6 @@ def test_move_unary_rest_required_fields( request_init = {} request_init["firewall_policy"] = "" - request_init["parent_id"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -3844,7 +4415,6 @@ def test_move_unary_rest_required_fields( ) # verify fields with default values are dropped - assert "parentId" not in jsonified_request default_values = getattr( transport_class._BaseMove, @@ -3857,11 +4427,8 @@ def test_move_unary_rest_required_fields( jsonified_request.update(unset_fields) # verify required fields with default values are now present - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == request_init["parent_id"] jsonified_request["firewallPolicy"] = "firewall_policy_value" - jsonified_request["parentId"] = "parent_id_value" # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( @@ -3874,8 +4441,6 @@ def test_move_unary_rest_required_fields( # verify required fields with non-default values are left alone assert "firewallPolicy" in jsonified_request assert jsonified_request["firewallPolicy"] == "firewall_policy_value" - assert "parentId" in jsonified_request - assert jsonified_request["parentId"] == "parent_id_value" client = FirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -3914,12 +4479,7 @@ def test_move_unary_rest_required_fields( response = client.move_unary(request) - expected_params = [ - ( - "parentId", - "", - ), - ] + expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) @@ -3941,7 +4501,6 @@ def test_move_unary_rest_flattened(): # get truthy value for each flattened field mock_args = dict( firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) mock_args.update(sample_request) @@ -3980,7 +4539,6 @@ def test_move_unary_rest_flattened_error(transport: str = "rest"): client.move_unary( compute.MoveFirewallPolicyRequest(), firewall_policy="firewall_policy_value", - parent_id="parent_id_value", ) @@ -5602,7 +6160,11 @@ def test_set_iam_policy_rest_flattened(): mock_args = dict( resource="resource_value", global_organization_set_policy_request_resource=compute.GlobalOrganizationSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -5643,7 +6205,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): compute.SetIamPolicyFirewallPolicyRequest(), resource="resource_value", global_organization_set_policy_request_resource=compute.GlobalOrganizationSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -5955,6 +6521,7 @@ def test_add_association_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -7019,6 +7586,7 @@ def test_get_association_rest_call_success(request_type): display_name="display_name_value", firewall_policy_id="firewall_policy_id_value", name="name_value", + priority=898, short_name="short_name_value", ) @@ -7040,6 +7608,7 @@ def test_get_association_rest_call_success(request_type): assert response.display_name == "display_name_value" assert response.firewall_policy_id == "firewall_policy_id_value" assert response.name == "name_value" + assert response.priority == 898 assert response.short_name == "short_name_value" @@ -7157,7 +7726,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -7176,7 +7744,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -7446,6 +8013,7 @@ def test_insert_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -8225,6 +8793,7 @@ def test_patch_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -9219,7 +9788,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_organization_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -9240,20 +9808,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -9346,7 +9908,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -9365,7 +9926,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py index ec5443cd4a42..fdfd38487b4e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Firewall() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1859,7 +2100,6 @@ def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py index aa99f5685b8f..7d9661e53b51 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,272 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ForwardingRuleAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ForwardingRule() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ForwardingRuleList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_target), "__call__") as call: + call.return_value = compute.Operation() + client.set_target() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -985,7 +1259,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2188,7 +2461,6 @@ def test_list_rest_required_fields(request_type=compute.ListForwardingRulesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py index 09e14079b5cc..bc3ac7eecebf 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.FutureReservationsAggregatedListResponse() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FutureReservation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FutureReservationsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1235,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2617,7 +2857,6 @@ def test_list_rest_required_fields(request_type=compute.ListFutureReservationsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3873,6 +4112,7 @@ def test_get_rest_call_success(request_type): return_value = compute.FutureReservation( auto_created_reservations_delete_time="auto_created_reservations_delete_time_value", auto_delete_auto_created_reservations=True, + colocation_resource="colocation_resource_value", confidential_compute_type="confidential_compute_type_value", creation_timestamp="creation_timestamp_value", deployment_type="deployment_type_value", @@ -3912,6 +4152,7 @@ def test_get_rest_call_success(request_type): == "auto_created_reservations_delete_time_value" ) assert response.auto_delete_auto_created_reservations is True + assert response.colocation_resource == "colocation_resource_value" assert response.confidential_compute_type == "confidential_compute_type_value" assert response.creation_timestamp == "creation_timestamp_value" assert response.deployment_type == "deployment_type_value" @@ -4051,6 +4292,7 @@ def test_insert_rest_call_success(request_type): "auto_created_reservations_delete_time": "auto_created_reservations_delete_time_value", "auto_created_reservations_duration": {"nanos": 543, "seconds": 751}, "auto_delete_auto_created_reservations": True, + "colocation_resource": "colocation_resource_value", "commitment_info": { "commitment_name": "commitment_name_value", "commitment_plan": "commitment_plan_value", @@ -4557,6 +4799,7 @@ def test_update_rest_call_success(request_type): "auto_created_reservations_delete_time": "auto_created_reservations_delete_time_value", "auto_created_reservations_duration": {"nanos": 543, "seconds": 751}, "auto_delete_auto_created_reservations": True, + "colocation_resource": "colocation_resource_value", "commitment_info": { "commitment_name": "commitment_name_value", "commitment_plan": "commitment_plan_value", diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py index c8d5c027c0f5..5972a4f838ef 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Address() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AddressList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1873,7 +2114,6 @@ def test_list_rest_required_fields(request_type=compute.ListGlobalAddressesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py index 57d1a00cf22d..ef2259e23bf9 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ForwardingRule() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ForwardingRuleList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_target), "__call__") as call: + call.return_value = compute.Operation() + client.set_target() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1907,7 +2146,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py new file mode 100644 index 000000000000..42062218853f --- /dev/null +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py @@ -0,0 +1,2216 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.global_frontend_settings_service import ( + GlobalFrontendSettingsServiceClient, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ( + GlobalFrontendSettingsServiceClient._get_client_cert_source(None, False) is None + ) + assert ( + GlobalFrontendSettingsServiceClient._get_client_cert_source( + mock_provided_cert_source, False + ) + is None + ) + assert ( + GlobalFrontendSettingsServiceClient._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 ( + GlobalFrontendSettingsServiceClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + GlobalFrontendSettingsServiceClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.GlobalFrontendSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.GlobalFrontendSettingsPatchResponse() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = GlobalFrontendSettingsServiceClient(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 = GlobalFrontendSettingsServiceClient(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", + [ + (GlobalFrontendSettingsServiceClient, "rest"), + ], +) +def test_global_frontend_settings_service_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.GlobalFrontendSettingsServiceRestTransport, "rest"), + ], +) +def test_global_frontend_settings_service_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", + [ + (GlobalFrontendSettingsServiceClient, "rest"), + ], +) +def test_global_frontend_settings_service_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_global_frontend_settings_service_client_get_transport_class(): + transport = GlobalFrontendSettingsServiceClient.get_transport_class() + available_transports = [ + transports.GlobalFrontendSettingsServiceRestTransport, + ] + assert transport in available_transports + + transport = GlobalFrontendSettingsServiceClient.get_transport_class("rest") + assert transport == transports.GlobalFrontendSettingsServiceRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + ), + ], +) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(GlobalFrontendSettingsServiceClient), +) +def test_global_frontend_settings_service_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( + GlobalFrontendSettingsServiceClient, "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( + GlobalFrontendSettingsServiceClient, "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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + "true", + ), + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(GlobalFrontendSettingsServiceClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_global_frontend_settings_service_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", [GlobalFrontendSettingsServiceClient]) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(GlobalFrontendSettingsServiceClient), +) +def test_global_frontend_settings_service_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [GlobalFrontendSettingsServiceClient]) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(GlobalFrontendSettingsServiceClient), +) +def test_global_frontend_settings_service_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = GlobalFrontendSettingsServiceClient._DEFAULT_UNIVERSE + default_endpoint = ( + GlobalFrontendSettingsServiceClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + ) + mock_universe = "bar.com" + mock_endpoint = ( + GlobalFrontendSettingsServiceClient._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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + ), + ], +) +def test_global_frontend_settings_service_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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + None, + ), + ], +) +def test_global_frontend_settings_service_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_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 = GlobalFrontendSettingsServiceClient( + 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.GetGlobalFrontendSettingRequest): + transport_class = transports.GlobalFrontendSettingsServiceRestTransport + + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.GlobalFrontendSettings() + # 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.GlobalFrontendSettings.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = GlobalFrontendSettingsServiceClient( + 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.GlobalFrontendSettings() + + # 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.GlobalFrontendSettings.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/v1/projects/{project}/global/globalFrontendSettings" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = GlobalFrontendSettingsServiceClient( + 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.GetGlobalFrontendSettingRequest(), + project="project_value", + ) + + +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 = GlobalFrontendSettingsServiceClient( + 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(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + 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_rest_required_fields( + request_type=compute.PatchGlobalFrontendSettingRequest, +): + transport_class = transports.GlobalFrontendSettingsServiceRestTransport + + 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 + + default_values = getattr( + transport_class._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "requestId", + "updateMask", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.GlobalFrontendSettingsPatchResponse() + # 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": "patch", + "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.GlobalFrontendSettingsPatchResponse.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) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_patch_rest_flattened(): + client = GlobalFrontendSettingsServiceClient( + 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.GlobalFrontendSettingsPatchResponse() + + # 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", + global_frontend_settings_resource=compute.GlobalFrontendSettings( + bundle_type="bundle_type_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.GlobalFrontendSettingsPatchResponse.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) + + # 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/v1/projects/{project}/global/globalFrontendSettings" + % client.transport._host, + args[1], + ) + + +def test_patch_rest_flattened_error(transport: str = "rest"): + client = GlobalFrontendSettingsServiceClient( + 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.patch( + compute.PatchGlobalFrontendSettingRequest(), + project="project_value", + global_frontend_settings_resource=compute.GlobalFrontendSettings( + bundle_type="bundle_type_value" + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + 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 = GlobalFrontendSettingsServiceClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = GlobalFrontendSettingsServiceClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.GlobalFrontendSettingsServiceRestTransport, + ], +) +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 = GlobalFrontendSettingsServiceClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_get_rest_bad_request(request_type=compute.GetGlobalFrontendSettingRequest): + client = GlobalFrontendSettingsServiceClient( + 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.get(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetGlobalFrontendSettingRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = GlobalFrontendSettingsServiceClient( + 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.GlobalFrontendSettings( + bundle_type="bundle_type_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + etag="etag_value", + id=205, + name="name_value", + self_link="self_link_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.GlobalFrontendSettings.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.GlobalFrontendSettings) + assert response.bundle_type == "bundle_type_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.etag == "etag_value" + assert response.id == 205 + assert response.name == "name_value" + assert response.self_link == "self_link_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.GlobalFrontendSettingsServiceRestInterceptor(), + ) + client = GlobalFrontendSettingsServiceClient(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.GlobalFrontendSettingsServiceRestInterceptor, "post_get" + ) as post, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, + "post_get_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, "pre_get" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetGlobalFrontendSettingRequest.pb( + compute.GetGlobalFrontendSettingRequest() + ) + 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.GlobalFrontendSettings.to_json( + compute.GlobalFrontendSettings() + ) + req.return_value.content = return_value + + request = compute.GetGlobalFrontendSettingRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.GlobalFrontendSettings() + post_with_metadata.return_value = compute.GlobalFrontendSettings(), 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_patch_rest_bad_request(request_type=compute.PatchGlobalFrontendSettingRequest): + client = GlobalFrontendSettingsServiceClient( + 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.patch(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.PatchGlobalFrontendSettingRequest, + dict, + ], +) +def test_patch_rest_call_success(request_type): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request_init["global_frontend_settings_resource"] = { + "bundle_type": "bundle_type_value", + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "etag": "etag_value", + "id": 205, + "name": "name_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.PatchGlobalFrontendSettingRequest.meta.fields[ + "global_frontend_settings_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_frontend_settings_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_frontend_settings_resource"][field]) + ): + del request_init["global_frontend_settings_resource"][field][i][ + subfield + ] + else: + del request_init["global_frontend_settings_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.GlobalFrontendSettingsPatchResponse() + + # 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.GlobalFrontendSettingsPatchResponse.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, compute.GlobalFrontendSettingsPatchResponse) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_patch_rest_interceptors(null_interceptor): + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.GlobalFrontendSettingsServiceRestInterceptor(), + ) + client = GlobalFrontendSettingsServiceClient(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.GlobalFrontendSettingsServiceRestInterceptor, "post_patch" + ) as post, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, + "post_patch_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, "pre_patch" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.PatchGlobalFrontendSettingRequest.pb( + compute.PatchGlobalFrontendSettingRequest() + ) + 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.GlobalFrontendSettingsPatchResponse.to_json( + compute.GlobalFrontendSettingsPatchResponse() + ) + req.return_value.content = return_value + + request = compute.PatchGlobalFrontendSettingRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.GlobalFrontendSettingsPatchResponse() + post_with_metadata.return_value = ( + compute.GlobalFrontendSettingsPatchResponse(), + 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_initialize_client_w_rest(): + client = GlobalFrontendSettingsServiceClient( + 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_get_empty_call_rest(): + client = GlobalFrontendSettingsServiceClient( + 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.GetGlobalFrontendSettingRequest() + 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_empty_call_rest(): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + client.patch(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.PatchGlobalFrontendSettingRequest() + assert args[0] == request_msg + + +def test_global_frontend_settings_service_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.GlobalFrontendSettingsServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_global_frontend_settings_service_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.global_frontend_settings_service.transports.GlobalFrontendSettingsServiceTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.GlobalFrontendSettingsServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "get", + "patch", + ) + 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_global_frontend_settings_service_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_v1.services.global_frontend_settings_service.transports.GlobalFrontendSettingsServiceTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.GlobalFrontendSettingsServiceTransport( + 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_global_frontend_settings_service_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_v1.services.global_frontend_settings_service.transports.GlobalFrontendSettingsServiceTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.GlobalFrontendSettingsServiceTransport() + adc.assert_called_once() + + +def test_global_frontend_settings_service_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) + GlobalFrontendSettingsServiceClient() + 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_global_frontend_settings_service_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.GlobalFrontendSettingsServiceRestTransport( + 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_global_frontend_settings_service_host_no_port(transport_name): + client = GlobalFrontendSettingsServiceClient( + 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_global_frontend_settings_service_host_with_port(transport_name): + client = GlobalFrontendSettingsServiceClient( + 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_global_frontend_settings_service_client_transport_session_collision( + transport_name, +): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = GlobalFrontendSettingsServiceClient( + credentials=creds1, + transport=transport_name, + ) + client2 = GlobalFrontendSettingsServiceClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.patch._session + session2 = client2.transport.patch._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = GlobalFrontendSettingsServiceClient.common_billing_account_path( + billing_account + ) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = GlobalFrontendSettingsServiceClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = GlobalFrontendSettingsServiceClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = GlobalFrontendSettingsServiceClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = GlobalFrontendSettingsServiceClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = GlobalFrontendSettingsServiceClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = GlobalFrontendSettingsServiceClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = GlobalFrontendSettingsServiceClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.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 = GlobalFrontendSettingsServiceClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = GlobalFrontendSettingsServiceClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.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.GlobalFrontendSettingsServiceTransport, "_prep_wrapped_messages" + ) as prep: + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.GlobalFrontendSettingsServiceTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = GlobalFrontendSettingsServiceClient.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 = GlobalFrontendSettingsServiceClient( + 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 = GlobalFrontendSettingsServiceClient( + 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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + ), + ], +) +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/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py index 9b53beb603c4..d2d13c868cf3 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_network_endpoints_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.attach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.attach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_network_endpoints_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.detach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.detach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEndpointGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkEndpointGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_network_endpoints_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_network_endpoints), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupsListNetworkEndpoints() + client.list_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2708,7 +2953,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2959,7 +3203,6 @@ def test_list_network_endpoints_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py index a5962709f882..8fa17a84210f 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.OperationAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteGlobalOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_wait_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.wait), "__call__") as call: + call.return_value = compute.Operation() + client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -988,7 +1163,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1586,7 +1760,6 @@ def test_list_rest_required_fields(request_type=compute.ListGlobalOperationsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py index 152843c1aba9..183913ee2874 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,105 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalOrganizationOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteGlobalOrganizationOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalOrganizationOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalOrganizationOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py index d5eb067c339c..73495e487218 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefix() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefixList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1918,7 +2091,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py index b86d81aa7fe5..9710d38d28ab 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.VmExtensionPolicyAggregatedListResponse() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.GlobalVmExtensionPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.GlobalVmExtensionPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1010,7 +1218,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2199,7 +2406,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py index 94a873e82b09..c8e29064c002 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthChecksAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthCheck() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthCheckList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2117,7 +2392,6 @@ def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py index a91bdec159f1..ac6e0b2a5e13 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.hosts import HostsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,105 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = HostsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Host() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_version_api_version_header(transport_name): + client = HostsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_version), "__call__") as call: + call.return_value = compute.Operation() + client.get_version() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = HostsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HostsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1557,7 +1664,6 @@ def test_list_rest_required_fields(request_type=compute.ListHostsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py index a991457b736d..24309cbe725d 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py @@ -58,6 +58,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -166,6 +174,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ImageFamilyViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ImageFamilyView() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py new file mode 100644 index 000000000000..3a005e52eca0 --- /dev/null +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py @@ -0,0 +1,2141 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.image_views import ( + ImageViewsClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ImageViewsClient._get_client_cert_source(None, False) is None + assert ( + ImageViewsClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + ImageViewsClient._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 ( + ImageViewsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + ImageViewsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ImageView() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ImageViewsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = ImageViewsClient(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 = ImageViewsClient(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", + [ + (ImageViewsClient, "rest"), + ], +) +def test_image_views_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.ImageViewsRestTransport, "rest"), + ], +) +def test_image_views_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", + [ + (ImageViewsClient, "rest"), + ], +) +def test_image_views_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_image_views_client_get_transport_class(): + transport = ImageViewsClient.get_transport_class() + available_transports = [ + transports.ImageViewsRestTransport, + ] + assert transport in available_transports + + transport = ImageViewsClient.get_transport_class("rest") + assert transport == transports.ImageViewsRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest"), + ], +) +@mock.patch.object( + ImageViewsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ImageViewsClient), +) +def test_image_views_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(ImageViewsClient, "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(ImageViewsClient, "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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest", "true"), + (ImageViewsClient, transports.ImageViewsRestTransport, "rest", "false"), + ], +) +@mock.patch.object( + ImageViewsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ImageViewsClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_image_views_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", [ImageViewsClient]) +@mock.patch.object( + ImageViewsClient, "DEFAULT_ENDPOINT", modify_default_endpoint(ImageViewsClient) +) +def test_image_views_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [ImageViewsClient]) +@mock.patch.object( + ImageViewsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ImageViewsClient), +) +def test_image_views_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = ImageViewsClient._DEFAULT_UNIVERSE + default_endpoint = ImageViewsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = ImageViewsClient._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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest"), + ], +) +def test_image_views_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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest", None), + ], +) +def test_image_views_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_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 = ImageViewsClient( + 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.GetImageViewRequest): + transport_class = transports.ImageViewsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["resource_id"] = "" + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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["resourceId"] = "resource_id_value" + + # 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 "resourceId" in jsonified_request + assert jsonified_request["resourceId"] == "resource_id_value" + + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ImageView() + # 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.ImageView.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = ImageViewsClient( + 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.ImageView() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "resource_id": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + resource_id="resource_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.ImageView.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/v1/projects/{project}/regions/{region}/imageViews/{resource_id}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = ImageViewsClient( + 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.GetImageViewRequest(), + project="project_value", + region="region_value", + resource_id="resource_id_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 = ImageViewsClient( + 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.ListImageViewsRequest): + transport_class = transports.ImageViewsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # 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" + + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ImageViewsListResponse() + # 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.ImageViewsListResponse.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = ImageViewsClient( + 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.ImageViewsListResponse() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "region": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_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.ImageViewsListResponse.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/v1/projects/{project}/regions/{region}/imageViews" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = ImageViewsClient( + 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.ListImageViewsRequest(), + project="project_value", + region="region_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = ImageViewsClient( + 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.ImageViewsListResponse( + items=[ + compute.ImageView(), + compute.ImageView(), + compute.ImageView(), + ], + next_page_token="abc", + ), + compute.ImageViewsListResponse( + items=[], + next_page_token="def", + ), + compute.ImageViewsListResponse( + items=[ + compute.ImageView(), + ], + next_page_token="ghi", + ), + compute.ImageViewsListResponse( + items=[ + compute.ImageView(), + compute.ImageView(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.ImageViewsListResponse.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.ImageView) 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_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ImageViewsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ImageViewsClient( + 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 = ImageViewsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ImageViewsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = ImageViewsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ImageViewsRestTransport, + ], +) +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 = ImageViewsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_get_rest_bad_request(request_type=compute.GetImageViewRequest): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "resource_id": "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(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetImageViewRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "resource_id": "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.ImageView() + + # 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.ImageView.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.ImageView) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ImageViewsRestInterceptor(), + ) + client = ImageViewsClient(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.ImageViewsRestInterceptor, "post_get") as post, + mock.patch.object( + transports.ImageViewsRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ImageViewsRestInterceptor, "pre_get") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetImageViewRequest.pb(compute.GetImageViewRequest()) + 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.ImageView.to_json(compute.ImageView()) + req.return_value.content = return_value + + request = compute.GetImageViewRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ImageView() + post_with_metadata.return_value = compute.ImageView(), 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_list_rest_bad_request(request_type=compute.ListImageViewsRequest): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListImageViewsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.ImageViewsListResponse( + 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.ImageViewsListResponse.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.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ImageViewsRestInterceptor(), + ) + client = ImageViewsClient(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.ImageViewsRestInterceptor, "post_list") as post, + mock.patch.object( + transports.ImageViewsRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ImageViewsRestInterceptor, "pre_list") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListImageViewsRequest.pb(compute.ListImageViewsRequest()) + 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.ImageViewsListResponse.to_json( + compute.ImageViewsListResponse() + ) + req.return_value.content = return_value + + request = compute.ListImageViewsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ImageViewsListResponse() + post_with_metadata.return_value = compute.ImageViewsListResponse(), 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_initialize_client_w_rest(): + client = ImageViewsClient( + 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_get_empty_call_rest(): + client = ImageViewsClient( + 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.GetImageViewRequest() + 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 = ImageViewsClient( + 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.ListImageViewsRequest() + assert args[0] == request_msg + + +def test_image_views_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.ImageViewsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_image_views_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.image_views.transports.ImageViewsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.ImageViewsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "get", + "list", + ) + 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_image_views_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_v1.services.image_views.transports.ImageViewsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ImageViewsTransport( + 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.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id="octopus", + ) + + +def test_image_views_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_v1.services.image_views.transports.ImageViewsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ImageViewsTransport() + adc.assert_called_once() + + +def test_image_views_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) + ImageViewsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id=None, + ) + + +def test_image_views_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.ImageViewsRestTransport( + 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_image_views_host_no_port(transport_name): + client = ImageViewsClient( + 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_image_views_host_with_port(transport_name): + client = ImageViewsClient( + 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_image_views_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = ImageViewsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = ImageViewsClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = ImageViewsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = ImageViewsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = ImageViewsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = ImageViewsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = ImageViewsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = ImageViewsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = ImageViewsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = ImageViewsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.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 = ImageViewsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = ImageViewsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.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.ImageViewsTransport, "_prep_wrapped_messages" + ) as prep: + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.ImageViewsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = ImageViewsClient.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 = ImageViewsClient( + 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 = ImageViewsClient( + 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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport), + ], +) +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/tests/unit/gapic/compute_v1/test_images.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py index cc4762406348..e55cff1cf898 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.images import ImagesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,377 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_deprecate_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.deprecate), "__call__") as call: + call.return_value = compute.Operation() + client.deprecate() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Image() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_from_family_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_from_family), "__call__" + ) as call: + call.return_value = compute.Image() + client.get_from_family() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ImageList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2579,7 +2958,6 @@ def test_list_rest_required_fields(request_type=compute.ListImagesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3251,7 +3629,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3293,7 +3675,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -4729,7 +5115,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4748,7 +5133,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -5555,7 +5939,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -5576,20 +5959,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -5675,7 +6052,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -5694,7 +6070,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py index fcd99ec7690a..8fc61f9a8c34 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -178,6 +186,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManagerResizeRequest() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceGroupManagerResizeRequestsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2408,7 +2581,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py index 69027751fb47..5f66555cb4f1 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,836 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_abandon_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.abandon_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.abandon_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceGroupManagerAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_apply_updates_to_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.apply_updates_to_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.apply_updates_to_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManager() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceGroupManagerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_errors_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_errors), "__call__") as call: + call.return_value = compute.InstanceGroupManagersListErrorsResponse() + client.list_errors() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_managed_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_managed_instances), "__call__" + ) as call: + call.return_value = ( + compute.InstanceGroupManagersListManagedInstancesResponse() + ) + client.list_managed_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_per_instance_configs), "__call__" + ) as call: + call.return_value = ( + compute.InstanceGroupManagersListPerInstanceConfigsResp() + ) + client.list_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_recreate_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.recreate_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.recreate_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.resume_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.resume_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_instance_template_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_instance_template), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_instance_template() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_pools_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_target_pools), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_target_pools() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_suspend_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.suspend_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.suspend_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1404,7 +2242,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -4256,7 +5093,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4508,7 +5344,6 @@ def test_list_errors_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4781,7 +5616,6 @@ def test_list_managed_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -5057,7 +5891,6 @@ def test_list_per_instance_configs_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py index 81b5c5c0f02a..6e27e88258df 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,348 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_instances_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceGroupAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_instances_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_instances), "__call__" + ) as call: + call.return_value = compute.InstanceGroupsListInstances() + client.list_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_instances_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_named_ports_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_named_ports), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_named_ports() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1369,7 +1719,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2569,7 +2918,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsReques "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2821,7 +3169,6 @@ def test_list_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py index 2cd3d1606dbc..0c1dec59614e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -172,6 +180,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InstanceSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py index 4215877a0b11..180a8b564c52 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,278 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceTemplateAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceTemplate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceTemplateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1272,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2330,7 +2609,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceTemplatesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2637,7 +2915,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2679,7 +2961,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3453,7 +3739,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3472,7 +3757,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4179,7 +4463,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4200,20 +4483,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4299,7 +4576,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4318,7 +4594,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py index 996cf6e6bd2a..c38960d05423 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -69,104 +77,1855 @@ CRED_INFO_STRING = json.dumps(CRED_INFO_JSON) -@pytest.fixture(autouse=True) -def disable_mtls_env(): - with mock.patch.dict( - os.environ, - { - "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", - "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", - }, - ): - yield +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert InstancesClient._get_client_cert_source(None, False) is None + assert ( + InstancesClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + InstancesClient._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 ( + InstancesClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + InstancesClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_access_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_access_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_access_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_network_interface_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_network_interface), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_network_interface() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_resource_policies_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_disk_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.attach_disk), "__call__") as call: + call.return_value = compute.Operation() + client.attach_disk() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_access_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_access_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_access_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_network_interface_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_network_interface), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_network_interface() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_disk_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.detach_disk), "__call__") as call: + call.return_value = compute.Operation() + client.detach_disk() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Instance() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_firewalls_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_firewalls), "__call__" + ) as call: + call.return_value = compute.InstancesGetEffectiveFirewallsResponse() + client.get_effective_firewalls() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_guest_attributes_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_guest_attributes), "__call__" + ) as call: + call.return_value = compute.GuestAttributes() + client.get_guest_attributes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_screenshot_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_screenshot), "__call__" + ) as call: + call.return_value = compute.Screenshot() + client.get_screenshot() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_serial_port_output_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_serial_port_output), "__call__" + ) as call: + call.return_value = compute.SerialPortOutput() + client.get_serial_port_output() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_shielded_instance_identity_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_shielded_instance_identity), "__call__" + ) as call: + call.return_value = compute.ShieldedInstanceIdentity() + client.get_shielded_instance_identity() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_referrers_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_referrers), "__call__" + ) as call: + call.return_value = compute.InstanceListReferrers() + client.list_referrers() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_resource_policies_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_report_host_as_faulty_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.report_host_as_faulty), "__call__" + ) as call: + call.return_value = compute.Operation() + client.report_host_as_faulty() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_reset_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.reset), "__call__") as call: + call.return_value = compute.Operation() + client.reset() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resume), "__call__") as call: + call.return_value = compute.Operation() + client.resume() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_send_diagnostic_interrupt_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.send_diagnostic_interrupt), "__call__" + ) as call: + call.return_value = compute.SendDiagnosticInterruptInstanceResponse() + client.send_diagnostic_interrupt() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_deletion_protection_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_deletion_protection), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_deletion_protection() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_disk_auto_delete_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_disk_auto_delete), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_disk_auto_delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_machine_resources_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_machine_resources), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_machine_resources() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_machine_type_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_machine_type), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_machine_type() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_metadata_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_metadata), "__call__") as call: + call.return_value = compute.Operation() + client.set_metadata() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_min_cpu_platform_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_min_cpu_platform), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_min_cpu_platform() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_name_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_name), "__call__") as call: + call.return_value = compute.Operation() + client.set_name() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_scheduling_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_scheduling), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_scheduling() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -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") +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_service_account_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_service_account), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_service_account() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -def client_cert_source_callback(): - return b"cert bytes", b"key bytes" +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_shielded_instance_integrity_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_shielded_instance_integrity_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_shielded_instance_integrity_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -# 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() +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_tags_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_tags), "__call__") as call: + call.return_value = compute.Operation() + client.set_tags() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -# 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 +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_simulate_maintenance_event_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.simulate_maintenance_event), "__call__" + ) as call: + call.return_value = compute.Operation() + client.simulate_maintenance_event() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -# 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 +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.start), "__call__") as call: + call.return_value = compute.Operation() + client.start() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -@pytest.fixture(autouse=True) -def set_event_loop(): - try: - asyncio.get_running_loop() - yield - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - try: - yield - finally: - loop.close() - asyncio.set_event_loop(None) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_with_encryption_key_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_with_encryption_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_with_encryption_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -def test__get_client_cert_source(): - mock_provided_cert_source = mock.Mock() - mock_default_cert_source = mock.Mock() +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.stop), "__call__") as call: + call.return_value = compute.Operation() + client.stop() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) - assert InstancesClient._get_client_cert_source(None, False) is None - assert ( - InstancesClient._get_client_cert_source(mock_provided_cert_source, False) - is None + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_suspend_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) - assert ( - InstancesClient._get_client_cert_source(mock_provided_cert_source, True) - == mock_provided_cert_source + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.suspend), "__call__") as call: + call.return_value = compute.Operation() + client.suspend() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) - 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 ( - InstancesClient._get_client_cert_source(None, True) - is mock_default_cert_source - ) - assert ( - InstancesClient._get_client_cert_source( - mock_provided_cert_source, "true" - ) - is mock_provided_cert_source - ) + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_access_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_access_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_access_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_display_device_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_display_device), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_display_device() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_network_interface_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_network_interface), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_network_interface() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_shielded_instance_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_shielded_instance_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_shielded_instance_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) @pytest.mark.parametrize( @@ -2231,7 +3990,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -6723,7 +8481,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstancesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -6975,7 +8732,6 @@ def test_list_referrers_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -10329,7 +12085,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -10372,7 +12132,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -22019,7 +23783,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -22038,7 +23801,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -24780,7 +26542,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -24801,20 +26562,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -24900,7 +26655,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -24919,7 +26673,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py index 59d6cf0c78e2..3702490bddfd 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshotGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ListInstantSnapshotGroups() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2146,7 +2391,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2466,7 +2710,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2509,7 +2757,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3177,7 +3429,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3196,7 +3447,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -3715,7 +3965,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -3736,20 +3985,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -3835,7 +4078,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3854,7 +4096,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py index d3e9eb04ec60..7d26a2bdc7c1 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstantSnapshotAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstantSnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1303,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2378,7 +2690,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstantSnapshotsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2698,7 +3009,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2741,7 +3056,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3966,7 +4285,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3985,7 +4303,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4500,7 +4817,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4521,20 +4837,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4620,7 +4930,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4639,7 +4948,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py index 0ca29867727d..daa22087f7a1 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,313 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectAttachmentGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_operational_status_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_operational_status), "__call__" + ) as call: + call.return_value = ( + compute.InterconnectAttachmentGroupsGetOperationalStatusResponse() + ) + client.get_operational_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectAttachmentGroupsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2334,7 +2649,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3066,7 +3380,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3108,7 +3426,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3751,7 +4073,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3770,7 +4091,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4787,7 +5107,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4808,20 +5127,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4907,7 +5220,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4926,7 +5238,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py index 6673bed34921..7c6e0cf8c80e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InterconnectAttachmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectAttachment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectAttachmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1004,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2228,7 +2468,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py index 04ed080c1460..2ecd2c40cdb9 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,346 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_members_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_members), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_members() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_operational_status_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_operational_status), "__call__" + ) as call: + call.return_value = compute.InterconnectGroupsGetOperationalStatusResponse() + client.get_operational_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectGroupsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2668,7 +3016,6 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectGroupsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3395,7 +3742,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3437,7 +3788,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -4346,7 +4701,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4365,7 +4719,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -5346,7 +5699,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -5367,20 +5719,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -5466,7 +5812,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -5485,7 +5830,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py index 2ac58e4a5c39..28bebfbd7f1a 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectLocation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectLocationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1172,7 +1246,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py index b2516f631b04..536534abb2ed 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectRemoteLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectRemoteLocation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectRemoteLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectRemoteLocationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1192,7 +1266,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py index bfa8cd00fe3f..138a3cdba66a 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,307 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Interconnect() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_diagnostics_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_diagnostics), "__call__" + ) as call: + call.return_value = compute.InterconnectsGetDiagnosticsResponse() + client.get_diagnostics() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_macsec_config_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_macsec_config), "__call__" + ) as call: + call.return_value = compute.InterconnectsGetMacsecConfigResponse() + client.get_macsec_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_name_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_name), "__call__") as call: + call.return_value = compute.Operation() + client.set_name() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2211,7 +2520,6 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3123,121 +3431,497 @@ def test_set_labels_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.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +def test_set_name_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 = InterconnectsClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="rest", ) - # It is an error to provide a credentials file and a transport instance. - transport = transports.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = InterconnectsClient( - 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.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = InterconnectsClient( - client_options=options, - transport=transport, - ) + # Ensure method has been cached + assert client._transport.set_name 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 = InterconnectsClient( - 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.set_name] = mock_rpc - # It is an error to provide scopes and a transport instance. - transport = transports.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = InterconnectsClient( - client_options={"scopes": ["1", "2"]}, - transport=transport, - ) + request = {} + client.set_name(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.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - client = InterconnectsClient(transport=transport) - assert client.transport is transport + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + client.set_name(request) -@pytest.mark.parametrize( - "transport_class", - [ - transports.InterconnectsRestTransport, - ], -) -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() + # 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_transport_kind_rest(): - transport = InterconnectsClient.get_transport_class("rest")( - credentials=ga_credentials.AnonymousCredentials() +def test_set_name_rest_required_fields(request_type=compute.SetNameInterconnectRequest): + transport_class = transports.InterconnectsRestTransport + + request_init = {} + request_init["interconnect"] = "" + 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) ) - assert transport.kind == "rest" + # verify fields with default values are dropped -def test_delete_rest_bad_request(request_type=compute.DeleteInterconnectRequest): - client = InterconnectsClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" + default_values = getattr( + transport_class._BaseSetName, + "_BaseSetName__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "interconnect": "sample2"} - request = request_type(**request_init) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) - # 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) + # verify required fields with default values are now present + jsonified_request["interconnect"] = "interconnect_value" + jsonified_request["project"] = "project_value" -@pytest.mark.parametrize( - "request_type", - [ - compute.DeleteInterconnectRequest, - dict, - ], -) -def test_delete_rest_call_success(request_type): - client = InterconnectsClient( + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "interconnect" in jsonified_request + assert jsonified_request["interconnect"] == "interconnect_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = InterconnectsClient( + 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.set_name(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_set_name_rest_flattened(): + client = InterconnectsClient( + 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", "interconnect": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_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.set_name(**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/v1/projects/{project}/global/interconnects/{interconnect}/setName" + % client.transport._host, + args[1], + ) + + +def test_set_name_rest_flattened_error(transport: str = "rest"): + client = InterconnectsClient( + 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_name( + compute.SetNameInterconnectRequest(), + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_value" + ), + ) + + +def test_set_name_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 = InterconnectsClient( + 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_name 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_name] = mock_rpc + + request = {} + client.set_name_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.set_name_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_name_unary_rest_required_fields( + request_type=compute.SetNameInterconnectRequest, +): + transport_class = transports.InterconnectsRestTransport + + request_init = {} + request_init["interconnect"] = "" + 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 + + default_values = getattr( + transport_class._BaseSetName, + "_BaseSetName__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["interconnect"] = "interconnect_value" + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "interconnect" in jsonified_request + assert jsonified_request["interconnect"] == "interconnect_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = InterconnectsClient( + 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.set_name_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_set_name_unary_rest_flattened(): + client = InterconnectsClient( + 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", "interconnect": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_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.set_name_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/v1/projects/{project}/global/interconnects/{interconnect}/setName" + % client.transport._host, + args[1], + ) + + +def test_set_name_unary_rest_flattened_error(transport: str = "rest"): + client = InterconnectsClient( + 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_name_unary( + compute.SetNameInterconnectRequest(), + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_value" + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InterconnectsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = InterconnectsClient( + 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 = InterconnectsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InterconnectsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = InterconnectsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.InterconnectsRestTransport, + ], +) +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 = InterconnectsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_delete_rest_bad_request(request_type=compute.DeleteInterconnectRequest): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "interconnect": "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.DeleteInterconnectRequest, + dict, + ], +) +def test_delete_rest_call_success(request_type): + client = InterconnectsClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -4851,6 +5535,258 @@ def test_set_labels_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() +def test_set_name_rest_bad_request(request_type=compute.SetNameInterconnectRequest): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "interconnect": "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_name(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.SetNameInterconnectRequest, + dict, + ], +) +def test_set_name_rest_call_success(request_type): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "interconnect": "sample2"} + request_init["interconnects_set_name_request_resource"] = { + "current_name": "current_name_value", + "name": "name_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.SetNameInterconnectRequest.meta.fields[ + "interconnects_set_name_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[ + "interconnects_set_name_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["interconnects_set_name_request_resource"][field]), + ): + del request_init["interconnects_set_name_request_resource"][field][ + i + ][subfield] + else: + del request_init["interconnects_set_name_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.set_name(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_set_name_rest_interceptors(null_interceptor): + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.InterconnectsRestInterceptor(), + ) + client = InterconnectsClient(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.InterconnectsRestInterceptor, "post_set_name" + ) as post, + mock.patch.object( + transports.InterconnectsRestInterceptor, "post_set_name_with_metadata" + ) as post_with_metadata, + mock.patch.object( + transports.InterconnectsRestInterceptor, "pre_set_name" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.SetNameInterconnectRequest.pb( + compute.SetNameInterconnectRequest() + ) + 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.SetNameInterconnectRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.set_name( + 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 = InterconnectsClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -5012,6 +5948,25 @@ def test_set_labels_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_set_name_unary_empty_call_rest(): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.set_name), "__call__") as call: + client.set_name_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.SetNameInterconnectRequest() + assert args[0] == request_msg + + def test_interconnects_base_transport_error(): # Passing both a credentials object and credentials_file should raise an error with pytest.raises(core_exceptions.DuplicateCredentialArgs): @@ -5042,6 +5997,7 @@ def test_interconnects_base_transport(): "list", "patch", "set_labels", + "set_name", ) for method in methods: with pytest.raises(NotImplementedError): @@ -5209,6 +6165,9 @@ def test_interconnects_client_transport_session_collision(transport_name): session1 = client1.transport.set_labels._session session2 = client2.transport.set_labels._session assert session1 != session2 + session1 = client1.transport.set_name._session + session2 = client2.transport.set_name._session + assert session1 != session2 def test_common_billing_account_path(): diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py index 9f1031a4558a..2f4217ebe461 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py @@ -58,6 +58,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -166,6 +174,144 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.LicenseCode() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1379,7 +1525,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -1421,7 +1571,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -1899,7 +2053,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -1918,7 +2071,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -2029,7 +2181,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -2050,20 +2201,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -2149,7 +2294,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -2168,7 +2312,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py index b24b4ef60e64..85107b9f340e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.licenses import LicensesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,276 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.License() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.LicensesListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2067,7 +2345,6 @@ def test_list_rest_required_fields(request_type=compute.ListLicensesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2373,7 +2650,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2415,7 +2696,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3459,7 +3744,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3478,7 +3762,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -3975,7 +4258,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -3996,20 +4278,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4095,7 +4371,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4114,7 +4389,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py index 989682fa38d2..cb609baf554a 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,276 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.MachineImage() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.MachineImageList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2055,7 +2333,6 @@ def test_list_rest_required_fields(request_type=compute.ListMachineImagesRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2362,7 +2639,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2404,7 +2685,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3412,7 +3697,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3431,7 +3715,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4172,7 +4455,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4193,20 +4475,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4292,7 +4568,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4311,7 +4586,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py index fd98c81a4cf6..febe3cf6199c 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = MachineTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.MachineTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = MachineTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.MachineType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = MachineTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.MachineTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1076,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1407,7 +1515,6 @@ def test_list_rest_required_fields(request_type=compute.ListMachineTypesRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py new file mode 100644 index 000000000000..843dc4015e11 --- /dev/null +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py @@ -0,0 +1,2156 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.managed_rulesets import ( + ManagedRulesetsClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ManagedRulesetsClient._get_client_cert_source(None, False) is None + assert ( + ManagedRulesetsClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + ManagedRulesetsClient._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 ( + ManagedRulesetsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + ManagedRulesetsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ManagedRuleset() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ManagedRulesetList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = ManagedRulesetsClient(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 = ManagedRulesetsClient(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", + [ + (ManagedRulesetsClient, "rest"), + ], +) +def test_managed_rulesets_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.ManagedRulesetsRestTransport, "rest"), + ], +) +def test_managed_rulesets_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", + [ + (ManagedRulesetsClient, "rest"), + ], +) +def test_managed_rulesets_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_managed_rulesets_client_get_transport_class(): + transport = ManagedRulesetsClient.get_transport_class() + available_transports = [ + transports.ManagedRulesetsRestTransport, + ] + assert transport in available_transports + + transport = ManagedRulesetsClient.get_transport_class("rest") + assert transport == transports.ManagedRulesetsRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport, "rest"), + ], +) +@mock.patch.object( + ManagedRulesetsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ManagedRulesetsClient), +) +def test_managed_rulesets_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(ManagedRulesetsClient, "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(ManagedRulesetsClient, "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", + [ + ( + ManagedRulesetsClient, + transports.ManagedRulesetsRestTransport, + "rest", + "true", + ), + ( + ManagedRulesetsClient, + transports.ManagedRulesetsRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + ManagedRulesetsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ManagedRulesetsClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_managed_rulesets_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", [ManagedRulesetsClient]) +@mock.patch.object( + ManagedRulesetsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ManagedRulesetsClient), +) +def test_managed_rulesets_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [ManagedRulesetsClient]) +@mock.patch.object( + ManagedRulesetsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ManagedRulesetsClient), +) +def test_managed_rulesets_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = ManagedRulesetsClient._DEFAULT_UNIVERSE + default_endpoint = ManagedRulesetsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = ManagedRulesetsClient._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", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport, "rest"), + ], +) +def test_managed_rulesets_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", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport, "rest", None), + ], +) +def test_managed_rulesets_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_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 = ManagedRulesetsClient( + 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.GetManagedRulesetRequest): + transport_class = transports.ManagedRulesetsRestTransport + + request_init = {} + request_init["managed_ruleset"] = "" + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["managedRuleset"] = "managed_ruleset_value" + jsonified_request["project"] = "project_value" + + # verify required fields with non-default values are left alone + assert "managedRuleset" in jsonified_request + assert jsonified_request["managedRuleset"] == "managed_ruleset_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ManagedRuleset() + # 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.ManagedRuleset.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = ManagedRulesetsClient( + 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.ManagedRuleset() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "managed_ruleset": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + managed_ruleset="managed_ruleset_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.ManagedRuleset.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/v1/projects/{project}/global/managedRulesets/{managed_ruleset}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = ManagedRulesetsClient( + 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.GetManagedRulesetRequest(), + project="project_value", + managed_ruleset="managed_ruleset_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 = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest): + transport_class = transports.ManagedRulesetsRestTransport + + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ManagedRulesetList() + # 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.ManagedRulesetList.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = ManagedRulesetsClient( + 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.ManagedRulesetList() + + # 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.ManagedRulesetList.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/v1/projects/{project}/global/managedRulesets" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest(), + project="project_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = ManagedRulesetsClient( + 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.ManagedRulesetList( + items=[ + compute.ManagedRuleset(), + compute.ManagedRuleset(), + compute.ManagedRuleset(), + ], + next_page_token="abc", + ), + compute.ManagedRulesetList( + items=[], + next_page_token="def", + ), + compute.ManagedRulesetList( + items=[ + compute.ManagedRuleset(), + ], + next_page_token="ghi", + ), + compute.ManagedRulesetList( + items=[ + compute.ManagedRuleset(), + compute.ManagedRuleset(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.ManagedRulesetList.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.ManagedRuleset) 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_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + 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 = ManagedRulesetsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = ManagedRulesetsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ManagedRulesetsRestTransport, + ], +) +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 = ManagedRulesetsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_get_rest_bad_request(request_type=compute.GetManagedRulesetRequest): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "managed_ruleset": "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.GetManagedRulesetRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "managed_ruleset": "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.ManagedRuleset( + change_log="change_log_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + id=205, + name="name_value", + rule_ids=["rule_ids_value"], + ruleset_id="ruleset_id_value", + self_link="self_link_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.ManagedRuleset.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.ManagedRuleset) + assert response.change_log == "change_log_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.id == 205 + assert response.name == "name_value" + assert response.rule_ids == ["rule_ids_value"] + assert response.ruleset_id == "ruleset_id_value" + assert response.self_link == "self_link_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ManagedRulesetsRestInterceptor(), + ) + client = ManagedRulesetsClient(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.ManagedRulesetsRestInterceptor, "post_get" + ) as post, + mock.patch.object( + transports.ManagedRulesetsRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ManagedRulesetsRestInterceptor, "pre_get") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetManagedRulesetRequest.pb( + compute.GetManagedRulesetRequest() + ) + 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.ManagedRuleset.to_json(compute.ManagedRuleset()) + req.return_value.content = return_value + + request = compute.GetManagedRulesetRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ManagedRuleset() + post_with_metadata.return_value = compute.ManagedRuleset(), 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_list_rest_bad_request(request_type=compute.ListManagedRulesetsRequest): + client = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = ManagedRulesetsClient( + 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.ManagedRulesetList( + id="id_value", + next_page_token="next_page_token_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.ManagedRulesetList.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.id == "id_value" + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_rest_interceptors(null_interceptor): + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ManagedRulesetsRestInterceptor(), + ) + client = ManagedRulesetsClient(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.ManagedRulesetsRestInterceptor, "post_list" + ) as post, + mock.patch.object( + transports.ManagedRulesetsRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ManagedRulesetsRestInterceptor, "pre_list") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListManagedRulesetsRequest.pb( + compute.ListManagedRulesetsRequest() + ) + 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.ManagedRulesetList.to_json(compute.ManagedRulesetList()) + req.return_value.content = return_value + + request = compute.ListManagedRulesetsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ManagedRulesetList() + post_with_metadata.return_value = compute.ManagedRulesetList(), 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_initialize_client_w_rest(): + client = ManagedRulesetsClient( + 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_get_empty_call_rest(): + client = ManagedRulesetsClient( + 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.GetManagedRulesetRequest() + 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 = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest() + assert args[0] == request_msg + + +def test_managed_rulesets_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.ManagedRulesetsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_managed_rulesets_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.managed_rulesets.transports.ManagedRulesetsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.ManagedRulesetsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "get", + "list", + ) + 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_managed_rulesets_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_v1.services.managed_rulesets.transports.ManagedRulesetsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ManagedRulesetsTransport( + 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.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id="octopus", + ) + + +def test_managed_rulesets_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_v1.services.managed_rulesets.transports.ManagedRulesetsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ManagedRulesetsTransport() + adc.assert_called_once() + + +def test_managed_rulesets_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) + ManagedRulesetsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id=None, + ) + + +def test_managed_rulesets_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.ManagedRulesetsRestTransport( + 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_managed_rulesets_host_no_port(transport_name): + client = ManagedRulesetsClient( + 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_managed_rulesets_host_with_port(transport_name): + client = ManagedRulesetsClient( + 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_managed_rulesets_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = ManagedRulesetsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = ManagedRulesetsClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = ManagedRulesetsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = ManagedRulesetsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = ManagedRulesetsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = ManagedRulesetsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = ManagedRulesetsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = ManagedRulesetsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = ManagedRulesetsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = ManagedRulesetsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.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 = ManagedRulesetsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = ManagedRulesetsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.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.ManagedRulesetsTransport, "_prep_wrapped_messages" + ) as prep: + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.ManagedRulesetsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = ManagedRulesetsClient.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 = ManagedRulesetsClient( + 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 = ManagedRulesetsClient( + 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", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport), + ], +) +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/tests/unit/gapic/compute_v1/test_network_attachments.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py index add6bcefbc23..fe2831bbc0a3 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkAttachmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkAttachment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkAttachmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1307,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2402,7 +2714,6 @@ def test_list_rest_required_fields(request_type=compute.ListNetworkAttachmentsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3134,7 +3445,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3177,7 +3492,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3989,7 +4308,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4008,7 +4326,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4824,7 +5141,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4845,20 +5161,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4944,7 +5254,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4963,7 +5272,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py index f3a3026e16c0..357d3398ba42 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkEdgeSecurityServiceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEdgeSecurityService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1012,7 +1187,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py index 9d24f7c35f79..ea11c20a4635 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,313 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_network_endpoints_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.attach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.attach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_network_endpoints_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.detach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.detach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEndpointGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkEndpointGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_network_endpoints_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_network_endpoints), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupsListNetworkEndpoints() + client.list_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1002,7 +1317,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3040,7 +3354,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3297,7 +3610,6 @@ def test_list_network_endpoints_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py index 6b58475a1200..8440fb4614c4 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,721 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkFirewallPolicyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_clone_rules_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.clone_rules), "__call__") as call: + call.return_value = compute.Operation() + client.clone_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FirewallPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyRule() + client.get_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.FirewallPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2182,7 +2905,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -4451,7 +5173,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -7082,7 +7803,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -7124,7 +7849,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -7442,6 +8171,7 @@ def test_add_association_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -8972,6 +9702,7 @@ def test_get_association_rest_call_success(request_type): display_name="display_name_value", firewall_policy_id="firewall_policy_id_value", name="name_value", + priority=898, short_name="short_name_value", ) @@ -8993,6 +9724,7 @@ def test_get_association_rest_call_success(request_type): assert response.display_name == "display_name_value" assert response.firewall_policy_id == "firewall_policy_id_value" assert response.name == "name_value" + assert response.priority == 898 assert response.short_name == "short_name_value" @@ -9110,7 +9842,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -9129,7 +9860,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -9565,6 +10295,7 @@ def test_insert_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -10039,6 +10770,7 @@ def test_patch_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -11526,7 +12258,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -11547,20 +12278,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -11646,7 +12371,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -11665,7 +12389,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py index 8b929ddf99f0..886bfb43ffa1 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkProfile() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkProfilesListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1153,7 +1227,6 @@ def test_list_rest_required_fields(request_type=compute.ListNetworkProfilesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -1460,7 +1533,6 @@ def test_get_rest_call_success(request_type): name="name_value", self_link="self_link_value", self_link_with_id="self_link_with_id_value", - zone="zone_value", ) # Wrap the value into a proper Response obj @@ -1484,7 +1556,6 @@ def test_get_rest_call_success(request_type): 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.zone == "zone_value" @pytest.mark.parametrize("null_interceptor", [True, False]) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py index c026758c7506..cacdc54f8f7e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.networks import NetworksClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,449 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_peering), "__call__") as call: + call.return_value = compute.Operation() + client.add_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_request_remove_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.cancel_request_remove_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.cancel_request_remove_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Network() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_firewalls_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_firewalls), "__call__" + ) as call: + call.return_value = compute.NetworksGetEffectiveFirewallsResponse() + client.get_effective_firewalls() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_peering_routes_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_peering_routes), "__call__" + ) as call: + call.return_value = compute.ExchangedPeeringRoutesList() + client.list_peering_routes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_request_remove_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.request_remove_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.request_remove_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_switch_to_custom_mode_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.switch_to_custom_mode), "__call__" + ) as call: + call.return_value = compute.Operation() + client.switch_to_custom_mode() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2794,7 +3245,6 @@ def test_list_rest_required_fields(request_type=compute.ListNetworksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3046,7 +3496,6 @@ def test_list_peering_routes_rest_required_fields( "pageToken", "peeringName", "region", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py index ae8d6b015f72..d805d2f784b4 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,515 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_nodes_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_nodes), "__call__") as call: + call.return_value = compute.Operation() + client.add_nodes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NodeGroupAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_nodes_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete_nodes), "__call__") as call: + call.return_value = compute.Operation() + client.delete_nodes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NodeGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NodeGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_nodes_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_nodes), "__call__") as call: + call.return_value = compute.NodeGroupsListNodes() + client.list_nodes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_node_template_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_node_template), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_node_template() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_simulate_maintenance_event_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.simulate_maintenance_event), "__call__" + ) as call: + call.return_value = compute.Operation() + client.simulate_maintenance_event() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1365,7 +1882,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3180,7 +3696,6 @@ def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3432,7 +3947,6 @@ def test_list_nodes_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4564,7 +5078,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -4607,7 +5125,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -6703,7 +7225,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -6722,7 +7243,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -7870,7 +8390,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -7891,20 +8410,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -7990,7 +8503,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -8009,7 +8521,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py index 2162ff2709f3..2308f91bdc23 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,278 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NodeTemplateAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NodeTemplate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NodeTemplateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -971,7 +1251,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2359,7 +2638,6 @@ def test_list_rest_required_fields(request_type=compute.ListNodeTemplatesRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2679,7 +2957,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2722,7 +3004,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3519,7 +3805,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3538,7 +3823,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4042,7 +4326,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4063,20 +4346,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4162,7 +4439,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4181,7 +4457,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py index 7a1705494e46..24fed5b7ddc0 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NodeTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NodeTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NodeTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NodeType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NodeTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NodeTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1076,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1404,7 +1512,6 @@ def test_list_rest_required_fields(request_type=compute.ListNodeTypesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py index 14982680d8cb..1e8e11021bc1 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,548 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_copy_rules_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.copy_rules), "__call__") as call: + call.return_value = compute.Operation() + client.copy_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SecurityPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.SecurityPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.SecurityPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SecurityPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_associations_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_associations), "__call__" + ) as call: + call.return_value = ( + compute.OrganizationSecurityPoliciesListAssociationsResponse() + ) + client.list_associations() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_preconfigured_expression_sets_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_preconfigured_expression_sets), "__call__" + ) as call: + call.return_value = ( + compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse() + ) + client.list_preconfigured_expression_sets() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -5751,9 +6301,10 @@ def test_add_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6956,9 +7507,10 @@ def test_insert_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -7987,9 +8539,10 @@ def test_patch_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -8333,9 +8886,10 @@ def test_patch_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py index 6ade74b29e31..d974b776e1c2 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.PacketMirroringAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PacketMirroring() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PacketMirroringList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1233,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2198,7 +2440,6 @@ def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py index 96c85dc1b3a3..a86508eada83 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,105 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PreviewFeaturesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PreviewFeature() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PreviewFeaturesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PreviewFeatureList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = PreviewFeaturesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1155,7 +1262,6 @@ def test_list_rest_required_fields(request_type=compute.ListPreviewFeaturesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py index 3c63195a7d87..d68e362878de 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py @@ -58,6 +58,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -166,6 +174,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ProjectViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ProjectView() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py index f10c05fcef05..2f25f49953de 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.projects import ProjectsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,490 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_disable_xpn_host_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.disable_xpn_host), "__call__" + ) as call: + call.return_value = compute.Operation() + client.disable_xpn_host() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_disable_xpn_resource_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.disable_xpn_resource), "__call__" + ) as call: + call.return_value = compute.Operation() + client.disable_xpn_resource() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_enable_xpn_host_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.enable_xpn_host), "__call__" + ) as call: + call.return_value = compute.Operation() + client.enable_xpn_host() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_enable_xpn_resource_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.enable_xpn_resource), "__call__" + ) as call: + call.return_value = compute.Operation() + client.enable_xpn_resource() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Project() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_xpn_host_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_xpn_host), "__call__") as call: + call.return_value = compute.Project() + client.get_xpn_host() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_xpn_resources_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_xpn_resources), "__call__" + ) as call: + call.return_value = compute.ProjectsGetXpnResources() + client.get_xpn_resources() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_xpn_hosts_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_xpn_hosts), "__call__" + ) as call: + call.return_value = compute.XpnHostList() + client.list_xpn_hosts() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_disk_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move_disk), "__call__") as call: + call.return_value = compute.Operation() + client.move_disk() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_instance_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.move_instance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.move_instance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_cloud_armor_tier_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_cloud_armor_tier), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_cloud_armor_tier() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_common_instance_metadata_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_common_instance_metadata), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_common_instance_metadata() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_default_network_tier_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_default_network_tier), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_default_network_tier() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_usage_export_bucket_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_usage_export_bucket), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_usage_export_bucket() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2748,7 +3240,6 @@ def test_get_xpn_resources_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2991,7 +3482,6 @@ def test_list_xpn_hosts_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py index 0b4a4281fd85..3d1d30c82fea 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_announce_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.announce), "__call__") as call: + call.return_value = compute.Operation() + client.announce() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PublicAdvertisedPrefix() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PublicAdvertisedPrefixList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_withdraw_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.withdraw), "__call__") as call: + call.return_value = compute.Operation() + client.withdraw() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2286,7 +2525,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py index 33a8c504197a..d9bd07f0e8d3 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,272 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.PublicDelegatedPrefixAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_announce_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.announce), "__call__") as call: + call.return_value = compute.Operation() + client.announce() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefix() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefixList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_withdraw_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.withdraw), "__call__") as call: + call.return_value = compute.Operation() + client.withdraw() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1004,7 +1278,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2596,7 +2869,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py index a87c6d4177b0..b788d445387b 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Autoscaler() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionAutoscalerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1936,7 +2177,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py index a3fea3a1b132..eadda3f2f395 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,309 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendBucket() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendBucketList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendBucketListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2136,7 +2447,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2386,7 +2696,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3104,7 +3413,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3147,7 +3460,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3815,7 +4132,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3834,7 +4150,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4801,7 +5116,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4822,20 +5136,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4921,7 +5229,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4940,7 +5247,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py index d2abaa379d65..07ecab08bd48 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,410 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.BackendServiceGroupHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendServiceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendServiceListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2328,7 +2740,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2578,7 +2989,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3296,7 +3706,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3339,7 +3753,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -5069,7 +5487,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -5088,7 +5505,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -6377,7 +6793,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -6398,20 +6813,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -6497,7 +6906,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -6516,7 +6924,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py index b67aff0524f4..e7dfdeb74261 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.CommitmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Commitment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.CommitmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1167,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1802,7 +1976,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py index 38b06e870415..f466a86c6738 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.CompositeHealthCheckAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.CompositeHealthCheck() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.CompositeHealthCheckHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.CompositeHealthCheckList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1012,7 +1288,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2405,7 +2680,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py index 25fdb23710c8..3fe70a9cb5ac 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionDiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.DiskType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionDiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionDiskTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1165,7 +1239,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDiskTypesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py index a41b7e4eb606..0207ac533c2b 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,620 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_resource_policies_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_snapshot_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_snapshot), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_snapshot() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Disk() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.DiskList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_resource_policies_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_async_replication_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_async_replication_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_group_async_replication_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_group_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_group_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -3255,7 +3877,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4363,7 +4984,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -4406,7 +5031,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -8270,7 +8899,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -8289,7 +8917,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -9329,7 +9956,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -9350,20 +9976,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -9449,7 +10069,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -9468,7 +10087,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py index 213a283cf293..b36fb587e78f 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -178,6 +186,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthAggregationPolicyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthAggregationPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthAggregationPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1017,7 +1260,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2236,7 +2478,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py index 344d4ea132b2..915bb7480b45 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthCheckServiceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthCheckService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthCheckServicesList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1010,7 +1253,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2218,7 +2460,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py index e4ab49a135f0..d20ff2ed81c6 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthCheck() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthCheckList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1930,7 +2171,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py index 2b469be7dd82..46db609e4c4e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthSourceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthSource() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.HealthSourceHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthSourceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1002,7 +1278,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2391,7 +2666,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthSourcesR "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py index 562c5e373fb6..eff071830f4c 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -180,6 +188,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManagerResizeRequest() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = ( + compute.RegionInstanceGroupManagerResizeRequestsListResponse() + ) + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2412,7 +2587,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py index 7cd0e3e62fac..287c0432fb1d 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,801 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_abandon_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.abandon_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.abandon_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_apply_updates_to_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.apply_updates_to_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.apply_updates_to_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManager() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionInstanceGroupManagerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_errors_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_errors), "__call__") as call: + call.return_value = compute.RegionInstanceGroupManagersListErrorsResponse() + client.list_errors() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_managed_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_managed_instances), "__call__" + ) as call: + call.return_value = ( + compute.RegionInstanceGroupManagersListInstancesResponse() + ) + client.list_managed_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_per_instance_configs), "__call__" + ) as call: + call.return_value = ( + compute.RegionInstanceGroupManagersListInstanceConfigsResp() + ) + client.list_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_recreate_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.recreate_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.recreate_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.resume_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.resume_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_instance_template_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_instance_template), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_instance_template() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_pools_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_target_pools), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_target_pools() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_suspend_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.suspend_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.suspend_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -4008,7 +4811,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4262,7 +5064,6 @@ def test_list_errors_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4538,7 +5339,6 @@ def test_list_managed_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4814,7 +5614,6 @@ def test_list_per_instance_configs_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py index 7db00037a9f8..ee52c5e36877 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,177 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionInstanceGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_instances_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_instances), "__call__" + ) as call: + call.return_value = compute.RegionInstanceGroupsListInstances() + client.list_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_named_ports_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_named_ports), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_named_ports() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1186,7 +1365,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -1438,7 +1616,6 @@ def test_list_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py index c31b1e168c9c..e3bd4e846807 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceTemplate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceTemplateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1952,7 +2092,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py index bd630e1b401c..180aeed090dd 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -168,6 +176,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = RegionInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py index 539bde3da24a..374dad1e26a9 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshotGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ListInstantSnapshotGroups() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2158,7 +2403,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2478,7 +2722,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2521,7 +2769,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3193,7 +3445,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3212,7 +3463,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -3735,7 +3985,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -3756,20 +4005,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -3855,7 +4098,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3874,7 +4116,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py index 632935c4b546..1d2eb1ed11b3 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,276 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstantSnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2138,7 +2416,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2458,7 +2735,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2501,7 +2782,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3587,7 +3872,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3606,7 +3890,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4124,7 +4407,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4145,20 +4427,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4244,7 +4520,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4263,7 +4538,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py index 40a7b531769c..7339af0db775 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_network_endpoints_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.attach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.attach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_network_endpoints_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.detach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.detach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEndpointGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkEndpointGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_network_endpoints_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_network_endpoints), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupsListNetworkEndpoints() + client.list_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2792,7 +3037,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3049,7 +3293,6 @@ def test_list_network_endpoints_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py index 503c7e280cb9..15ba043494aa 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,618 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_clone_rules_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.clone_rules), "__call__") as call: + call.return_value = compute.Operation() + client.clone_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FirewallPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_firewalls_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_firewalls), "__call__" + ) as call: + call.return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + ) + client.get_effective_firewalls() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.FirewallPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1017,6 +1637,7 @@ def test_add_association_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( + "associatedPolicyToBeReplaced", "replaceExistingAssociation", "requestId", ) @@ -1221,6 +1842,7 @@ def test_add_association_unary_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( + "associatedPolicyToBeReplaced", "replaceExistingAssociation", "requestId", ) @@ -3961,7 +4583,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4551,7 +5172,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"): ) -def test_patch_rule_rest_use_cached_wrapped_rpc(): +def test_patch_association_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: @@ -4565,17 +5186,19 @@ def test_patch_rule_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch_rule in client._transport._wrapped_methods + assert client._transport.patch_association 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_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.patch_association] = ( + mock_rpc + ) request = {} - client.patch_rule(request) + client.patch_association(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -4584,15 +5207,15 @@ def test_patch_rule_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.patch_rule(request) + client.patch_association(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_rule_rest_required_fields( - request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, +def test_patch_association_rest_required_fields( + request_type=compute.PatchAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -4609,8 +5232,8 @@ def test_patch_rule_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BasePatchRule, - "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchAssociation, + "_BasePatchAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -4625,12 +5248,7 @@ def test_patch_rule_rest_required_fields( jsonified_request["region"] = "region_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "priority", - "requestId", - ) - ) + assert not set(unset_fields) - set(("requestId",)) # verify required fields with non-default values are left alone assert "firewallPolicy" in jsonified_request @@ -4676,14 +5294,14 @@ def test_patch_rule_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_rule(request) + response = client.patch_association(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_patch_rule_rest_flattened(): +def test_patch_association_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4706,8 +5324,8 @@ def test_patch_rule_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) mock_args.update(sample_request) @@ -4722,20 +5340,20 @@ def test_patch_rule_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_rule(**mock_args) + client.patch_association(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchAssociation" % client.transport._host, args[1], ) -def test_patch_rule_rest_flattened_error(transport: str = "rest"): +def test_patch_association_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4744,18 +5362,18 @@ def test_patch_rule_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_rule( - compute.PatchRuleRegionNetworkFirewallPolicyRequest(), + client.patch_association( + compute.PatchAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) -def test_patch_rule_unary_rest_use_cached_wrapped_rpc(): +def test_patch_association_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: @@ -4769,17 +5387,19 @@ def test_patch_rule_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch_rule in client._transport._wrapped_methods + assert client._transport.patch_association 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_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.patch_association] = ( + mock_rpc + ) request = {} - client.patch_rule_unary(request) + client.patch_association_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -4788,15 +5408,15 @@ def test_patch_rule_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.patch_rule_unary(request) + client.patch_association_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_rule_unary_rest_required_fields( - request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, +def test_patch_association_unary_rest_required_fields( + request_type=compute.PatchAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -4813,8 +5433,8 @@ def test_patch_rule_unary_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BasePatchRule, - "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchAssociation, + "_BasePatchAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -4829,12 +5449,7 @@ def test_patch_rule_unary_rest_required_fields( jsonified_request["region"] = "region_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "priority", - "requestId", - ) - ) + assert not set(unset_fields) - set(("requestId",)) # verify required fields with non-default values are left alone assert "firewallPolicy" in jsonified_request @@ -4880,14 +5495,14 @@ def test_patch_rule_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_rule_unary(request) + response = client.patch_association_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_patch_rule_unary_rest_flattened(): +def test_patch_association_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4910,8 +5525,8 @@ def test_patch_rule_unary_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) mock_args.update(sample_request) @@ -4926,20 +5541,20 @@ def test_patch_rule_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_rule_unary(**mock_args) + client.patch_association_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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchAssociation" % client.transport._host, args[1], ) -def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_association_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4948,18 +5563,18 @@ def test_patch_rule_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_rule_unary( - compute.PatchRuleRegionNetworkFirewallPolicyRequest(), + client.patch_association_unary( + compute.PatchAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) -def test_remove_association_rest_use_cached_wrapped_rpc(): +def test_patch_rule_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: @@ -4973,21 +5588,17 @@ def test_remove_association_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.remove_association in client._transport._wrapped_methods - ) + assert client._transport.patch_rule 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.remove_association] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.patch_rule] = mock_rpc request = {} - client.remove_association(request) + client.patch_rule(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -4996,15 +5607,15 @@ def test_remove_association_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_association(request) + client.patch_rule(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_remove_association_rest_required_fields( - request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, +def test_patch_rule_rest_required_fields( + request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5021,8 +5632,8 @@ def test_remove_association_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveAssociation, - "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchRule, + "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5039,7 +5650,7 @@ def test_remove_association_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "name", + "priority", "requestId", ) ) @@ -5074,6 +5685,7 @@ def test_remove_association_rest_required_fields( "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -5087,14 +5699,14 @@ def test_remove_association_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_association(request) + response = client.patch_rule(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_association_rest_flattened(): +def test_patch_rule_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5117,6 +5729,9 @@ def test_remove_association_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) mock_args.update(sample_request) @@ -5130,20 +5745,20 @@ def test_remove_association_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_association(**mock_args) + client.patch_rule(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" % client.transport._host, args[1], ) -def test_remove_association_rest_flattened_error(transport: str = "rest"): +def test_patch_rule_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5152,15 +5767,18 @@ def test_remove_association_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.remove_association( - compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), + client.patch_rule( + compute.PatchRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) -def test_remove_association_unary_rest_use_cached_wrapped_rpc(): +def test_patch_rule_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: @@ -5174,21 +5792,17 @@ def test_remove_association_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.remove_association in client._transport._wrapped_methods - ) + assert client._transport.patch_rule 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.remove_association] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.patch_rule] = mock_rpc request = {} - client.remove_association_unary(request) + client.patch_rule_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5197,15 +5811,15 @@ def test_remove_association_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_association_unary(request) + client.patch_rule_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_remove_association_unary_rest_required_fields( - request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, +def test_patch_rule_unary_rest_required_fields( + request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5222,8 +5836,8 @@ def test_remove_association_unary_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveAssociation, - "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchRule, + "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5240,7 +5854,7 @@ def test_remove_association_unary_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "name", + "priority", "requestId", ) ) @@ -5275,6 +5889,7 @@ def test_remove_association_unary_rest_required_fields( "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -5288,14 +5903,14 @@ def test_remove_association_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_association_unary(request) + response = client.patch_rule_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_association_unary_rest_flattened(): +def test_patch_rule_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5318,6 +5933,9 @@ def test_remove_association_unary_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) mock_args.update(sample_request) @@ -5331,20 +5949,20 @@ def test_remove_association_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_association_unary(**mock_args) + client.patch_rule_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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" % client.transport._host, args[1], ) -def test_remove_association_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5353,15 +5971,18 @@ def test_remove_association_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.remove_association_unary( - compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), + client.patch_rule_unary( + compute.PatchRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) -def test_remove_rule_rest_use_cached_wrapped_rpc(): +def test_remove_association_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: @@ -5375,17 +5996,21 @@ def test_remove_rule_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.remove_rule in client._transport._wrapped_methods + assert ( + client._transport.remove_association 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.remove_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.remove_association] = ( + mock_rpc + ) request = {} - client.remove_rule(request) + client.remove_association(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5394,15 +6019,15 @@ def test_remove_rule_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_rule(request) + client.remove_association(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_remove_rule_rest_required_fields( - request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, +def test_remove_association_rest_required_fields( + request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5419,8 +6044,8 @@ def test_remove_rule_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveRule, - "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveAssociation, + "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5437,7 +6062,7 @@ def test_remove_rule_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "priority", + "name", "requestId", ) ) @@ -5485,14 +6110,14 @@ def test_remove_rule_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_rule(request) + response = client.remove_association(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_rule_rest_flattened(): +def test_remove_association_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5528,20 +6153,20 @@ def test_remove_rule_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_rule(**mock_args) + client.remove_association(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" % client.transport._host, args[1], ) -def test_remove_rule_rest_flattened_error(transport: str = "rest"): +def test_remove_association_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5550,15 +6175,15 @@ def test_remove_rule_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.remove_rule( - compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), + client.remove_association( + compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", ) -def test_remove_rule_unary_rest_use_cached_wrapped_rpc(): +def test_remove_association_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: @@ -5572,17 +6197,21 @@ def test_remove_rule_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.remove_rule in client._transport._wrapped_methods + assert ( + client._transport.remove_association 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.remove_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.remove_association] = ( + mock_rpc + ) request = {} - client.remove_rule_unary(request) + client.remove_association_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5591,15 +6220,15 @@ def test_remove_rule_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_rule_unary(request) + client.remove_association_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_remove_rule_unary_rest_required_fields( - request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, +def test_remove_association_unary_rest_required_fields( + request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5616,8 +6245,8 @@ def test_remove_rule_unary_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveRule, - "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveAssociation, + "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5634,7 +6263,7 @@ def test_remove_rule_unary_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "priority", + "name", "requestId", ) ) @@ -5682,14 +6311,14 @@ def test_remove_rule_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_rule_unary(request) + response = client.remove_association_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_rule_unary_rest_flattened(): +def test_remove_association_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5725,20 +6354,20 @@ def test_remove_rule_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_rule_unary(**mock_args) + client.remove_association_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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" % client.transport._host, args[1], ) -def test_remove_rule_unary_rest_flattened_error(transport: str = "rest"): +def test_remove_association_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5747,15 +6376,15 @@ def test_remove_rule_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.remove_rule_unary( - compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), + client.remove_association_unary( + compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", ) -def test_set_iam_policy_rest_use_cached_wrapped_rpc(): +def test_remove_rule_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: @@ -5769,37 +6398,41 @@ def test_set_iam_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.set_iam_policy in client._transport._wrapped_methods + assert client._transport.remove_rule 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 + client._transport._wrapped_methods[client._transport.remove_rule] = mock_rpc request = {} - client.set_iam_policy(request) + client.remove_rule(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.set_iam_policy(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.remove_rule(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.SetIamPolicyRegionNetworkFirewallPolicyRequest, +def test_remove_rule_rest_required_fields( + request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport request_init = {} + request_init["firewall_policy"] = "" request_init["project"] = "" request_init["region"] = "" - request_init["resource"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -5809,8 +6442,8 @@ def test_set_iam_policy_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseSetIamPolicy, - "_BaseSetIamPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveRule, + "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5820,17 +6453,25 @@ def test_set_iam_policy_rest_required_fields( # verify required fields with default values are now present + jsonified_request["firewallPolicy"] = "firewall_policy_value" jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["resource"] = "resource_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "priority", + "requestId", + ) + ) # verify required fields with non-default values are left alone + assert "firewallPolicy" in jsonified_request + assert jsonified_request["firewallPolicy"] == "firewall_policy_value" 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 = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -5839,7 +6480,7 @@ def test_set_iam_policy_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Policy() + 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 @@ -5854,28 +6495,27 @@ def test_set_iam_policy_rest_required_fields( "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) + 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.set_iam_policy(request) + response = client.remove_rule(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_set_iam_policy_rest_flattened(): +def test_remove_rule_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5884,23 +6524,20 @@ def test_set_iam_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.Policy() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { "project": "sample1", "region": "sample2", - "resource": "sample3", + "firewall_policy": "sample3", } # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - resource="resource_value", - region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] - ), + firewall_policy="firewall_policy_value", ) mock_args.update(sample_request) @@ -5908,26 +6545,26 @@ def test_set_iam_policy_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Policy.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.set_iam_policy(**mock_args) + client.remove_rule(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/setIamPolicy" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" % client.transport._host, args[1], ) -def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): +def test_remove_rule_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5936,18 +6573,15 @@ def test_set_iam_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.set_iam_policy( - compute.SetIamPolicyRegionNetworkFirewallPolicyRequest(), + client.remove_rule( + compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", - resource="resource_value", - region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] - ), + firewall_policy="firewall_policy_value", ) -def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): +def test_remove_rule_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: @@ -5961,41 +6595,41 @@ 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.remove_rule 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.remove_rule] = mock_rpc request = {} - client.test_iam_permissions(request) + client.remove_rule_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.remove_rule_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.TestIamPermissionsRegionNetworkFirewallPolicyRequest, +def test_remove_rule_unary_rest_required_fields( + request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport request_init = {} + request_init["firewall_policy"] = "" request_init["project"] = "" request_init["region"] = "" - request_init["resource"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -6005,8 +6639,8 @@ def test_test_iam_permissions_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseTestIamPermissions, - "_BaseTestIamPermissions__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveRule, + "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -6016,17 +6650,25 @@ def test_test_iam_permissions_rest_required_fields( # verify required fields with default values are now present + jsonified_request["firewallPolicy"] = "firewall_policy_value" jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["resource"] = "resource_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "priority", + "requestId", + ) + ) # verify required fields with non-default values are left alone + assert "firewallPolicy" in jsonified_request + assert jsonified_request["firewallPolicy"] == "firewall_policy_value" 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 = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -6035,7 +6677,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 @@ -6050,28 +6692,27 @@ def test_test_iam_permissions_rest_required_fields( "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) + 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.remove_rule_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_test_iam_permissions_rest_flattened(): +def test_remove_rule_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6080,23 +6721,20 @@ 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", + "firewall_policy": "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"] - ), + firewall_policy="firewall_policy_value", ) mock_args.update(sample_request) @@ -6104,26 +6742,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.remove_rule_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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/testIamPermissions" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" % client.transport._host, args[1], ) -def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): +def test_remove_rule_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6132,138 +6770,799 @@ 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.TestIamPermissionsRegionNetworkFirewallPolicyRequest(), + client.remove_rule_unary( + compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", - resource="resource_value", - test_permissions_request_resource=compute.TestPermissionsRequest( - permissions=["permissions_value"] - ), + firewall_policy="firewall_policy_value", ) -def test_credentials_transport_error(): - # It is an error to provide credentials and a transport instance. - transport = transports.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +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 = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="rest", ) - # It is an error to provide a credentials file and a transport instance. - transport = transports.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = RegionNetworkFirewallPoliciesClient( - 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.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = RegionNetworkFirewallPoliciesClient( - client_options=options, - transport=transport, - ) + # Ensure method has been cached + assert client._transport.set_iam_policy 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 = RegionNetworkFirewallPoliciesClient( - 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.set_iam_policy] = mock_rpc - # It is an error to provide scopes and a transport instance. - transport = transports.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = RegionNetworkFirewallPoliciesClient( - client_options={"scopes": ["1", "2"]}, - transport=transport, - ) + request = {} + client.set_iam_policy(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.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - client = RegionNetworkFirewallPoliciesClient(transport=transport) - assert client.transport is transport + 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 -@pytest.mark.parametrize( - "transport_class", - [ - transports.RegionNetworkFirewallPoliciesRestTransport, - ], -) -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_set_iam_policy_rest_required_fields( + request_type=compute.SetIamPolicyRegionNetworkFirewallPolicyRequest, +): + transport_class = transports.RegionNetworkFirewallPoliciesRestTransport -def test_transport_kind_rest(): - transport = RegionNetworkFirewallPoliciesClient.get_transport_class("rest")( - credentials=ga_credentials.AnonymousCredentials() + 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) ) - assert transport.kind == "rest" + # verify fields with default values are dropped -def test_add_association_rest_bad_request( - request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest, -): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" + default_values = getattr( + transport_class._BaseSetIamPolicy, + "_BaseSetIamPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, ) - # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request } - request = request_type(**request_init) + jsonified_request.update(unset_fields) - # 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.add_association(request) + # verify required fields with default values are now present + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["resource"] = "resource_value" -@pytest.mark.parametrize( - "request_type", - [ - compute.AddAssociationRegionNetworkFirewallPolicyRequest, - dict, - ], -) -def test_add_association_rest_call_success(request_type): - client = RegionNetworkFirewallPoliciesClient( + # 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 = RegionNetworkFirewallPoliciesClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_set_iam_policy_rest_flattened(): + client = RegionNetworkFirewallPoliciesClient( + 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", + "region": "sample2", + "resource": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + resource="resource_value", + region_set_policy_request_resource=compute.RegionSetPolicyRequest( + bindings=[ + compute.Binding( + condition=compute.Expr(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.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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/setIamPolicy" + % client.transport._host, + args[1], + ) + + +def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): + client = RegionNetworkFirewallPoliciesClient( + 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.SetIamPolicyRegionNetworkFirewallPolicyRequest(), + project="project_value", + region="region_value", + resource="resource_value", + region_set_policy_request_resource=compute.RegionSetPolicyRequest( + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_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 = RegionNetworkFirewallPoliciesClient( + 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.TestIamPermissionsRegionNetworkFirewallPolicyRequest, +): + transport_class = transports.RegionNetworkFirewallPoliciesRestTransport + + 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 + + default_values = getattr( + transport_class._BaseTestIamPermissions, + "_BaseTestIamPermissions__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # 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 = RegionNetworkFirewallPoliciesClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_test_iam_permissions_rest_flattened(): + client = RegionNetworkFirewallPoliciesClient( + 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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/testIamPermissions" + % client.transport._host, + args[1], + ) + + +def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): + client = RegionNetworkFirewallPoliciesClient( + 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.TestIamPermissionsRegionNetworkFirewallPolicyRequest(), + project="project_value", + region="region_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.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + 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 = RegionNetworkFirewallPoliciesClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = RegionNetworkFirewallPoliciesClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.RegionNetworkFirewallPoliciesRestTransport, + ], +) +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 = RegionNetworkFirewallPoliciesClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_add_association_rest_bad_request( + request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.add_association(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.AddAssociationRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_add_association_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } + request_init["firewall_policy_association_resource"] = { + "attachment_target": "attachment_target_value", + "display_name": "display_name_value", + "firewall_policy_id": "firewall_policy_id_value", + "name": "name_value", + "priority": 898, + "short_name": "short_name_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.AddAssociationRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_association_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[ + "firewall_policy_association_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["firewall_policy_association_resource"][field]) + ): + del request_init["firewall_policy_association_resource"][field][i][ + subfield + ] + else: + del request_init["firewall_policy_association_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.add_association(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_add_association_rest_interceptors(null_interceptor): + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.RegionNetworkFirewallPoliciesRestInterceptor(), + ) + client = RegionNetworkFirewallPoliciesClient(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.RegionNetworkFirewallPoliciesRestInterceptor, + "post_add_association", + ) as post, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_add_association_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_add_association", + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AddAssociationRegionNetworkFirewallPolicyRequest.pb( + compute.AddAssociationRegionNetworkFirewallPolicyRequest() + ) + 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.AddAssociationRegionNetworkFirewallPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.add_association( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_add_rule_rest_bad_request( + request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.add_rule(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.AddRuleRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_add_rule_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6273,20 +7572,76 @@ def test_add_association_rest_call_success(request_type): "region": "sample2", "firewall_policy": "sample3", } - request_init["firewall_policy_association_resource"] = { - "attachment_target": "attachment_target_value", - "display_name": "display_name_value", - "firewall_policy_id": "firewall_policy_id_value", - "name": "name_value", - "short_name": "short_name_value", + request_init["firewall_policy_rule_resource"] = { + "action": "action_value", + "description": "description_value", + "direction": "direction_value", + "disabled": True, + "enable_logging": True, + "kind": "kind_value", + "match": { + "dest_address_groups": [ + "dest_address_groups_value1", + "dest_address_groups_value2", + ], + "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], + "dest_ip_ranges": ["dest_ip_ranges_value1", "dest_ip_ranges_value2"], + "dest_network_context": "dest_network_context_value", + "dest_network_type": "dest_network_type_value", + "dest_region_codes": [ + "dest_region_codes_value1", + "dest_region_codes_value2", + ], + "dest_threat_intelligences": [ + "dest_threat_intelligences_value1", + "dest_threat_intelligences_value2", + ], + "layer4_configs": [ + { + "ip_protocol": "ip_protocol_value", + "ports": ["ports_value1", "ports_value2"], + } + ], + "src_address_groups": [ + "src_address_groups_value1", + "src_address_groups_value2", + ], + "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], + "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], + "src_network_context": "src_network_context_value", + "src_network_type": "src_network_type_value", + "src_networks": ["src_networks_value1", "src_networks_value2"], + "src_region_codes": ["src_region_codes_value1", "src_region_codes_value2"], + "src_secure_tags": [{"name": "name_value", "state": "state_value"}], + "src_threat_intelligences": [ + "src_threat_intelligences_value1", + "src_threat_intelligences_value2", + ], + }, + "priority": 898, + "rule_name": "rule_name_value", + "rule_tuple_count": 1737, + "security_profile_group": "security_profile_group_value", + "target_forwarding_rules": [ + "target_forwarding_rules_value1", + "target_forwarding_rules_value2", + ], + "target_resources": ["target_resources_value1", "target_resources_value2"], + "target_secure_tags": {}, + "target_service_accounts": [ + "target_service_accounts_value1", + "target_service_accounts_value2", + ], + "target_type": "target_type_value", + "tls_inspect": True, } # 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.AddAssociationRegionNetworkFirewallPolicyRequest.meta.fields[ - "firewall_policy_association_resource" + test_field = compute.AddRuleRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_rule_resource" ] def get_message_fields(field): @@ -6316,7 +7671,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[ - "firewall_policy_association_resource" + "firewall_policy_rule_resource" ].items(): # pragma: NO COVER result = None is_repeated = False @@ -6348,15 +7703,13 @@ def get_message_fields(field): if subfield: if field_repeated: for i in range( - 0, len(request_init["firewall_policy_association_resource"][field]) + 0, len(request_init["firewall_policy_rule_resource"][field]) ): - del request_init["firewall_policy_association_resource"][field][i][ + del request_init["firewall_policy_rule_resource"][field][i][ subfield ] else: - del request_init["firewall_policy_association_resource"][field][ - subfield - ] + del request_init["firewall_policy_rule_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -6397,7 +7750,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.add_association(request) + response = client.add_rule(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -6426,7 +7779,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_add_association_rest_interceptors(null_interceptor): +def test_add_rule_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -6439,23 +7792,202 @@ def test_add_association_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_add_association", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_add_association_with_metadata", + "post_add_rule_with_metadata", ) as post_with_metadata, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AddRuleRegionNetworkFirewallPolicyRequest.pb( + compute.AddRuleRegionNetworkFirewallPolicyRequest() + ) + 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.AddRuleRegionNetworkFirewallPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.add_rule( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_clone_rules_rest_bad_request( + request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.clone_rules(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.CloneRulesRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_clone_rules_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.clone_rules(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_clone_rules_rest_interceptors(null_interceptor): + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.RegionNetworkFirewallPoliciesRestInterceptor(), + ) + client = RegionNetworkFirewallPoliciesClient(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.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules" + ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_add_association", + "post_clone_rules_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.AddAssociationRegionNetworkFirewallPolicyRequest.pb( - compute.AddAssociationRegionNetworkFirewallPolicyRequest() + pb_message = compute.CloneRulesRegionNetworkFirewallPolicyRequest.pb( + compute.CloneRulesRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -6470,7 +8002,7 @@ def test_add_association_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.AddAssociationRegionNetworkFirewallPolicyRequest() + request = compute.CloneRulesRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -6479,7 +8011,7 @@ def test_add_association_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.add_association( + client.clone_rules( request, metadata=[ ("key", "val"), @@ -6492,8 +8024,8 @@ def test_add_association_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_add_rule_rest_bad_request( - request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest, +def test_delete_rest_bad_request( + request_type=compute.DeleteRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -6519,17 +8051,17 @@ def test_add_rule_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.add_rule(request) + client.delete(request) @pytest.mark.parametrize( "request_type", [ - compute.AddRuleRegionNetworkFirewallPolicyRequest, + compute.DeleteRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_add_rule_rest_call_success(request_type): +def test_delete_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6540,144 +8072,6 @@ def test_add_rule_rest_call_success(request_type): "region": "sample2", "firewall_policy": "sample3", } - request_init["firewall_policy_rule_resource"] = { - "action": "action_value", - "description": "description_value", - "direction": "direction_value", - "disabled": True, - "enable_logging": True, - "kind": "kind_value", - "match": { - "dest_address_groups": [ - "dest_address_groups_value1", - "dest_address_groups_value2", - ], - "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], - "dest_ip_ranges": ["dest_ip_ranges_value1", "dest_ip_ranges_value2"], - "dest_network_context": "dest_network_context_value", - "dest_network_type": "dest_network_type_value", - "dest_region_codes": [ - "dest_region_codes_value1", - "dest_region_codes_value2", - ], - "dest_threat_intelligences": [ - "dest_threat_intelligences_value1", - "dest_threat_intelligences_value2", - ], - "layer4_configs": [ - { - "ip_protocol": "ip_protocol_value", - "ports": ["ports_value1", "ports_value2"], - } - ], - "src_address_groups": [ - "src_address_groups_value1", - "src_address_groups_value2", - ], - "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], - "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], - "src_network_context": "src_network_context_value", - "src_network_type": "src_network_type_value", - "src_networks": ["src_networks_value1", "src_networks_value2"], - "src_region_codes": ["src_region_codes_value1", "src_region_codes_value2"], - "src_secure_tags": [{"name": "name_value", "state": "state_value"}], - "src_threat_intelligences": [ - "src_threat_intelligences_value1", - "src_threat_intelligences_value2", - ], - }, - "priority": 898, - "rule_name": "rule_name_value", - "rule_tuple_count": 1737, - "security_profile_group": "security_profile_group_value", - "target_forwarding_rules": [ - "target_forwarding_rules_value1", - "target_forwarding_rules_value2", - ], - "target_resources": ["target_resources_value1", "target_resources_value2"], - "target_secure_tags": {}, - "target_service_accounts": [ - "target_service_accounts_value1", - "target_service_accounts_value2", - ], - "target_type": "target_type_value", - "tls_inspect": True, - } - # 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.AddRuleRegionNetworkFirewallPolicyRequest.meta.fields[ - "firewall_policy_rule_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[ - "firewall_policy_rule_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["firewall_policy_rule_resource"][field]) - ): - del request_init["firewall_policy_rule_resource"][field][i][ - subfield - ] - else: - del request_init["firewall_policy_rule_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -6718,7 +8112,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.add_rule(request) + response = client.delete(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -6747,7 +8141,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_add_rule_rest_interceptors(null_interceptor): +def test_delete_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -6760,21 +8154,21 @@ def test_add_rule_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_add_rule_with_metadata", + "post_delete_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.AddRuleRegionNetworkFirewallPolicyRequest.pb( - compute.AddRuleRegionNetworkFirewallPolicyRequest() + pb_message = compute.DeleteRegionNetworkFirewallPolicyRequest.pb( + compute.DeleteRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -6789,7 +8183,7 @@ def test_add_rule_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.AddRuleRegionNetworkFirewallPolicyRequest() + request = compute.DeleteRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -6798,7 +8192,7 @@ def test_add_rule_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.add_rule( + client.delete( request, metadata=[ ("key", "val"), @@ -6811,8 +8205,8 @@ def test_add_rule_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_clone_rules_rest_bad_request( - request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest, +def test_get_rest_bad_request( + request_type=compute.GetRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -6838,17 +8232,17 @@ def test_clone_rules_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.clone_rules(request) + client.get(request) @pytest.mark.parametrize( "request_type", [ - compute.CloneRulesRegionNetworkFirewallPolicyRequest, + compute.GetRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_clone_rules_rest_call_success(request_type): +def test_get_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6864,29 +8258,21 @@ def test_clone_rules_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.Operation( - client_operation_id="client_operation_id_value", + return_value = compute.FirewallPolicy( 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, + display_name="display_name_value", + fingerprint="fingerprint_value", 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, + parent="parent_value", + policy_type="policy_type_value", region="region_value", + rule_tuple_count=1737, 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", + self_link_with_id="self_link_with_id_value", + short_name="short_name_value", ) # Wrap the value into a proper Response obj @@ -6894,41 +8280,33 @@ def test_clone_rules_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.FirewallPolicy.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.clone_rules(request) + response = client.get(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 isinstance(response, compute.FirewallPolicy) 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.display_name == "display_name_value" + assert response.fingerprint == "fingerprint_value" 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.parent == "parent_value" + assert response.policy_type == "policy_type_value" assert response.region == "region_value" + assert response.rule_tuple_count == 1737 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" + assert response.self_link_with_id == "self_link_with_id_value" + assert response.short_name == "short_name_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_clone_rules_rest_interceptors(null_interceptor): +def test_get_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -6941,21 +8319,21 @@ def test_clone_rules_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_clone_rules_with_metadata", + "post_get_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.CloneRulesRegionNetworkFirewallPolicyRequest.pb( - compute.CloneRulesRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetRegionNetworkFirewallPolicyRequest.pb( + compute.GetRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -6967,19 +8345,19 @@ def test_clone_rules_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.Operation.to_json(compute.Operation()) + return_value = compute.FirewallPolicy.to_json(compute.FirewallPolicy()) req.return_value.content = return_value - request = compute.CloneRulesRegionNetworkFirewallPolicyRequest() + request = compute.GetRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.Operation() - post_with_metadata.return_value = compute.Operation(), metadata + post.return_value = compute.FirewallPolicy() + post_with_metadata.return_value = compute.FirewallPolicy(), metadata - client.clone_rules( + client.get( request, metadata=[ ("key", "val"), @@ -6992,8 +8370,8 @@ def test_clone_rules_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_delete_rest_bad_request( - request_type=compute.DeleteRegionNetworkFirewallPolicyRequest, +def test_get_association_rest_bad_request( + request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -7019,17 +8397,17 @@ def test_delete_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.delete(request) + client.get_association(request) @pytest.mark.parametrize( "request_type", [ - compute.DeleteRegionNetworkFirewallPolicyRequest, + compute.GetAssociationRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_delete_rest_call_success(request_type): +def test_get_association_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -7045,29 +8423,13 @@ def test_delete_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.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", + return_value = compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value", + display_name="display_name_value", + firewall_policy_id="firewall_policy_id_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", + priority=898, + short_name="short_name_value", ) # Wrap the value into a proper Response obj @@ -7075,41 +8437,25 @@ def test_delete_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.FirewallPolicyAssociation.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) + response = client.get_association(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 isinstance(response, compute.FirewallPolicyAssociation) + assert response.attachment_target == "attachment_target_value" + assert response.display_name == "display_name_value" + assert response.firewall_policy_id == "firewall_policy_id_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" + assert response.priority == 898 + assert response.short_name == "short_name_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_delete_rest_interceptors(null_interceptor): +def test_get_association_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7122,21 +8468,23 @@ def test_delete_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_get_association", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_delete_with_metadata", + "post_get_association_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_get_association", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.DeleteRegionNetworkFirewallPolicyRequest.pb( - compute.DeleteRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetAssociationRegionNetworkFirewallPolicyRequest.pb( + compute.GetAssociationRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7148,19 +8496,21 @@ def test_delete_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.Operation.to_json(compute.Operation()) + return_value = compute.FirewallPolicyAssociation.to_json( + compute.FirewallPolicyAssociation() + ) req.return_value.content = return_value - request = compute.DeleteRegionNetworkFirewallPolicyRequest() + request = compute.GetAssociationRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.Operation() - post_with_metadata.return_value = compute.Operation(), metadata + post.return_value = compute.FirewallPolicyAssociation() + post_with_metadata.return_value = compute.FirewallPolicyAssociation(), metadata - client.delete( + client.get_association( request, metadata=[ ("key", "val"), @@ -7173,18 +8523,14 @@ def test_delete_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_rest_bad_request( - request_type=compute.GetRegionNetworkFirewallPolicyRequest, +def test_get_effective_firewalls_rest_bad_request( + request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "sample2"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7200,47 +8546,30 @@ def test_get_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.get(request) + client.get_effective_firewalls(request) @pytest.mark.parametrize( "request_type", [ - compute.GetRegionNetworkFirewallPolicyRequest, + compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_get_rest_call_success(request_type): +def test_get_effective_firewalls_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "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.FirewallPolicy( - creation_timestamp="creation_timestamp_value", - description="description_value", - display_name="display_name_value", - fingerprint="fingerprint_value", - id=205, - kind="kind_value", - name="name_value", - parent="parent_value", - policy_type="policy_type_value", - region="region_value", - rule_tuple_count=1737, - self_link="self_link_value", - self_link_with_id="self_link_with_id_value", - short_name="short_name_value", + return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() ) # Wrap the value into a proper Response obj @@ -7248,33 +8577,25 @@ def test_get_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicy.pb(return_value) + return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.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.get_effective_firewalls(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.FirewallPolicy) - assert response.creation_timestamp == "creation_timestamp_value" - assert response.description == "description_value" - assert response.display_name == "display_name_value" - assert response.fingerprint == "fingerprint_value" - assert response.id == 205 - assert response.kind == "kind_value" - assert response.name == "name_value" - assert response.parent == "parent_value" - assert response.policy_type == "policy_type_value" - assert response.region == "region_value" - assert response.rule_tuple_count == 1737 - assert response.self_link == "self_link_value" - assert response.self_link_with_id == "self_link_with_id_value" - assert response.short_name == "short_name_value" + assert isinstance( + response, compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse + ) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_rest_interceptors(null_interceptor): +def test_get_effective_firewalls_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7287,21 +8608,23 @@ def test_get_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_get_effective_firewalls", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_with_metadata", + "post_get_effective_firewalls_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_get_effective_firewalls", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetRegionNetworkFirewallPolicyRequest.pb( - compute.GetRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest.pb( + compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7313,19 +8636,28 @@ def test_get_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.FirewallPolicy.to_json(compute.FirewallPolicy()) + return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + ) + ) req.return_value.content = return_value - request = compute.GetRegionNetworkFirewallPolicyRequest() + request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicy() - post_with_metadata.return_value = compute.FirewallPolicy(), metadata + post.return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + ) + post_with_metadata.return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse(), + metadata, + ) - client.get( + client.get_effective_firewalls( request, metadata=[ ("key", "val"), @@ -7338,18 +8670,14 @@ def test_get_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_association_rest_bad_request( - request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest, +def test_get_iam_policy_rest_bad_request( + request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + 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. @@ -7365,38 +8693,31 @@ def test_get_association_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.get_association(request) + client.get_iam_policy(request) @pytest.mark.parametrize( "request_type", [ - compute.GetAssociationRegionNetworkFirewallPolicyRequest, + compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_get_association_rest_call_success(request_type): +def test_get_iam_policy_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "sample2", "resource": "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.FirewallPolicyAssociation( - attachment_target="attachment_target_value", - display_name="display_name_value", - firewall_policy_id="firewall_policy_id_value", - name="name_value", - short_name="short_name_value", + return_value = compute.Policy( + etag="etag_value", + version=774, ) # Wrap the value into a proper Response obj @@ -7404,24 +8725,21 @@ def test_get_association_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicyAssociation.pb(return_value) + 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_association(request) + response = client.get_iam_policy(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.FirewallPolicyAssociation) - assert response.attachment_target == "attachment_target_value" - assert response.display_name == "display_name_value" - assert response.firewall_policy_id == "firewall_policy_id_value" - assert response.name == "name_value" - assert response.short_name == "short_name_value" + assert isinstance(response, compute.Policy) + assert response.etag == "etag_value" + assert response.version == 774 @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_association_rest_interceptors(null_interceptor): +def test_get_iam_policy_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7435,22 +8753,22 @@ def test_get_association_rest_interceptors(null_interceptor): mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_association", + "post_get_iam_policy", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_association_with_metadata", + "post_get_iam_policy_with_metadata", ) as post_with_metadata, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_get_association", + "pre_get_iam_policy", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetAssociationRegionNetworkFirewallPolicyRequest.pb( - compute.GetAssociationRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest.pb( + compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7461,22 +8779,20 @@ def test_get_association_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.FirewallPolicyAssociation.to_json( - compute.FirewallPolicyAssociation() - ) + 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.GetAssociationRegionNetworkFirewallPolicyRequest() + request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicyAssociation() - post_with_metadata.return_value = compute.FirewallPolicyAssociation(), metadata + post.return_value = compute.Policy() + post_with_metadata.return_value = compute.Policy(), metadata - client.get_association( + client.get_iam_policy( request, metadata=[ ("key", "val"), @@ -7489,14 +8805,18 @@ def test_get_association_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_effective_firewalls_rest_bad_request( - request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, +def test_get_rule_rest_bad_request( + request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7512,30 +8832,48 @@ def test_get_effective_firewalls_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.get_effective_firewalls(request) + client.get_rule(request) @pytest.mark.parametrize( "request_type", [ - compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, + compute.GetRuleRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_get_effective_firewalls_rest_call_success(request_type): +def test_get_rule_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + return_value = compute.FirewallPolicyRule( + action="action_value", + description="description_value", + direction="direction_value", + disabled=True, + enable_logging=True, + kind="kind_value", + priority=898, + rule_name="rule_name_value", + rule_tuple_count=1737, + security_profile_group="security_profile_group_value", + target_forwarding_rules=["target_forwarding_rules_value"], + target_resources=["target_resources_value"], + target_service_accounts=["target_service_accounts_value"], + target_type="target_type_value", + tls_inspect=True, ) # Wrap the value into a proper Response obj @@ -7543,25 +8881,34 @@ def test_get_effective_firewalls_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = ( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.pb( - return_value - ) - ) + return_value = compute.FirewallPolicyRule.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_effective_firewalls(request) + response = client.get_rule(request) # Establish that the response is the type that we expect. - assert isinstance( - response, compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse - ) + assert isinstance(response, compute.FirewallPolicyRule) + assert response.action == "action_value" + assert response.description == "description_value" + assert response.direction == "direction_value" + assert response.disabled is True + assert response.enable_logging is True + assert response.kind == "kind_value" + assert response.priority == 898 + assert response.rule_name == "rule_name_value" + assert response.rule_tuple_count == 1737 + assert response.security_profile_group == "security_profile_group_value" + assert response.target_forwarding_rules == ["target_forwarding_rules_value"] + assert response.target_resources == ["target_resources_value"] + assert response.target_service_accounts == ["target_service_accounts_value"] + assert response.target_type == "target_type_value" + assert response.tls_inspect is True @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_effective_firewalls_rest_interceptors(null_interceptor): +def test_get_rule_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7574,23 +8921,21 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_effective_firewalls", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_rule" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_effective_firewalls_with_metadata", + "post_get_rule_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_get_effective_firewalls", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_rule" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest.pb( - compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetRuleRegionNetworkFirewallPolicyRequest.pb( + compute.GetRuleRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7602,89 +8947,271 @@ def test_get_effective_firewalls_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.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() - ) - ) + return_value = compute.FirewallPolicyRule.to_json(compute.FirewallPolicyRule()) req.return_value.content = return_value - request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() - metadata = [ - ("key", "val"), - ("cephalopod", "squid"), - ] - pre.return_value = request, metadata - post.return_value = ( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() - ) - post_with_metadata.return_value = ( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse(), - metadata, - ) + request = compute.GetRuleRegionNetworkFirewallPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.FirewallPolicyRule() + post_with_metadata.return_value = compute.FirewallPolicyRule(), metadata + + client.get_rule( + 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.InsertRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.insert(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.InsertRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_insert_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2"} + request_init["firewall_policy_resource"] = { + "associations": [ + { + "attachment_target": "attachment_target_value", + "display_name": "display_name_value", + "firewall_policy_id": "firewall_policy_id_value", + "name": "name_value", + "priority": 898, + "short_name": "short_name_value", + } + ], + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "display_name": "display_name_value", + "fingerprint": "fingerprint_value", + "id": 205, + "kind": "kind_value", + "name": "name_value", + "packet_mirroring_rules": [ + { + "action": "action_value", + "description": "description_value", + "direction": "direction_value", + "disabled": True, + "enable_logging": True, + "kind": "kind_value", + "match": { + "dest_address_groups": [ + "dest_address_groups_value1", + "dest_address_groups_value2", + ], + "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], + "dest_ip_ranges": [ + "dest_ip_ranges_value1", + "dest_ip_ranges_value2", + ], + "dest_network_context": "dest_network_context_value", + "dest_network_type": "dest_network_type_value", + "dest_region_codes": [ + "dest_region_codes_value1", + "dest_region_codes_value2", + ], + "dest_threat_intelligences": [ + "dest_threat_intelligences_value1", + "dest_threat_intelligences_value2", + ], + "layer4_configs": [ + { + "ip_protocol": "ip_protocol_value", + "ports": ["ports_value1", "ports_value2"], + } + ], + "src_address_groups": [ + "src_address_groups_value1", + "src_address_groups_value2", + ], + "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], + "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], + "src_network_context": "src_network_context_value", + "src_network_type": "src_network_type_value", + "src_networks": ["src_networks_value1", "src_networks_value2"], + "src_region_codes": [ + "src_region_codes_value1", + "src_region_codes_value2", + ], + "src_secure_tags": [{"name": "name_value", "state": "state_value"}], + "src_threat_intelligences": [ + "src_threat_intelligences_value1", + "src_threat_intelligences_value2", + ], + }, + "priority": 898, + "rule_name": "rule_name_value", + "rule_tuple_count": 1737, + "security_profile_group": "security_profile_group_value", + "target_forwarding_rules": [ + "target_forwarding_rules_value1", + "target_forwarding_rules_value2", + ], + "target_resources": [ + "target_resources_value1", + "target_resources_value2", + ], + "target_secure_tags": {}, + "target_service_accounts": [ + "target_service_accounts_value1", + "target_service_accounts_value2", + ], + "target_type": "target_type_value", + "tls_inspect": True, + } + ], + "parent": "parent_value", + "policy_type": "policy_type_value", + "region": "region_value", + "rule_tuple_count": 1737, + "rules": {}, + "self_link": "self_link_value", + "self_link_with_id": "self_link_with_id_value", + "short_name": "short_name_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.InsertRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_resource" + ] - client.get_effective_firewalls( - request, - metadata=[ - ("key", "val"), - ("cephalopod", "squid"), - ], - ) + 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 = [] - pre.assert_called_once() - post.assert_called_once() - post_with_metadata.assert_called_once() + 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 -def test_get_iam_policy_rest_bad_request( - request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, -): - client = RegionNetworkFirewallPoliciesClient( - 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) + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] - # 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) + 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[ + "firewall_policy_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 -@pytest.mark.parametrize( - "request_type", - [ - compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, - dict, - ], -) -def test_get_iam_policy_rest_call_success(request_type): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) + 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, + } + ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"} + # 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["firewall_policy_resource"][field])): + del request_init["firewall_policy_resource"][field][i][subfield] + else: + del request_init["firewall_policy_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, + 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 @@ -7692,22 +9219,41 @@ def test_get_iam_policy_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Policy.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_iam_policy(request) + response = client.insert(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 + 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_get_iam_policy_rest_interceptors(null_interceptor): +def test_insert_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7720,23 +9266,21 @@ def test_get_iam_policy_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_iam_policy", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_iam_policy_with_metadata", + "post_insert_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_get_iam_policy", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest.pb( - compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() + pb_message = compute.InsertRegionNetworkFirewallPolicyRequest.pb( + compute.InsertRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7748,19 +9292,19 @@ def test_get_iam_policy_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.Policy.to_json(compute.Policy()) + return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() + request = compute.InsertRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.Policy() - post_with_metadata.return_value = compute.Policy(), metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata - client.get_iam_policy( + client.insert( request, metadata=[ ("key", "val"), @@ -7773,18 +9317,14 @@ def test_get_iam_policy_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_rule_rest_bad_request( - request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest, +def test_list_rest_bad_request( + request_type=compute.ListRegionNetworkFirewallPoliciesRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "sample2"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7800,48 +9340,32 @@ def test_get_rule_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.get_rule(request) + client.list(request) @pytest.mark.parametrize( "request_type", [ - compute.GetRuleRegionNetworkFirewallPolicyRequest, + compute.ListRegionNetworkFirewallPoliciesRequest, dict, ], ) -def test_get_rule_rest_call_success(request_type): +def test_list_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "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.FirewallPolicyRule( - action="action_value", - description="description_value", - direction="direction_value", - disabled=True, - enable_logging=True, + return_value = compute.FirewallPolicyList( + id="id_value", kind="kind_value", - priority=898, - rule_name="rule_name_value", - rule_tuple_count=1737, - security_profile_group="security_profile_group_value", - target_forwarding_rules=["target_forwarding_rules_value"], - target_resources=["target_resources_value"], - target_service_accounts=["target_service_accounts_value"], - target_type="target_type_value", - tls_inspect=True, + next_page_token="next_page_token_value", ) # Wrap the value into a proper Response obj @@ -7849,34 +9373,22 @@ def test_get_rule_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicyRule.pb(return_value) + return_value = compute.FirewallPolicyList.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_rule(request) + response = client.list(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.FirewallPolicyRule) - assert response.action == "action_value" - assert response.description == "description_value" - assert response.direction == "direction_value" - assert response.disabled is True - assert response.enable_logging is True + assert isinstance(response, pagers.ListPager) + assert response.id == "id_value" assert response.kind == "kind_value" - assert response.priority == 898 - assert response.rule_name == "rule_name_value" - assert response.rule_tuple_count == 1737 - assert response.security_profile_group == "security_profile_group_value" - assert response.target_forwarding_rules == ["target_forwarding_rules_value"] - assert response.target_resources == ["target_resources_value"] - assert response.target_service_accounts == ["target_service_accounts_value"] - assert response.target_type == "target_type_value" - assert response.tls_inspect is True + assert response.next_page_token == "next_page_token_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_rule_rest_interceptors(null_interceptor): +def test_list_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7889,21 +9401,21 @@ def test_get_rule_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_list" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_rule_with_metadata", + "post_list_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_list" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetRuleRegionNetworkFirewallPolicyRequest.pb( - compute.GetRuleRegionNetworkFirewallPolicyRequest() + pb_message = compute.ListRegionNetworkFirewallPoliciesRequest.pb( + compute.ListRegionNetworkFirewallPoliciesRequest() ) transcode.return_value = { "method": "post", @@ -7915,19 +9427,19 @@ def test_get_rule_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.FirewallPolicyRule.to_json(compute.FirewallPolicyRule()) + return_value = compute.FirewallPolicyList.to_json(compute.FirewallPolicyList()) req.return_value.content = return_value - request = compute.GetRuleRegionNetworkFirewallPolicyRequest() + request = compute.ListRegionNetworkFirewallPoliciesRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicyRule() - post_with_metadata.return_value = compute.FirewallPolicyRule(), metadata + post.return_value = compute.FirewallPolicyList() + post_with_metadata.return_value = compute.FirewallPolicyList(), metadata - client.get_rule( + client.list( request, metadata=[ ("key", "val"), @@ -7940,14 +9452,18 @@ def test_get_rule_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_insert_rest_bad_request( - request_type=compute.InsertRegionNetworkFirewallPolicyRequest, +def test_patch_rest_bad_request( + request_type=compute.PatchRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7963,23 +9479,27 @@ def test_insert_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.insert(request) + client.patch(request) @pytest.mark.parametrize( "request_type", [ - compute.InsertRegionNetworkFirewallPolicyRequest, + compute.PatchRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_insert_rest_call_success(request_type): +def test_patch_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } request_init["firewall_policy_resource"] = { "associations": [ { @@ -7987,6 +9507,7 @@ def test_insert_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -8085,7 +9606,7 @@ def test_insert_rest_call_success(request_type): # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.InsertRegionNetworkFirewallPolicyRequest.meta.fields[ + test_field = compute.PatchRegionNetworkFirewallPolicyRequest.meta.fields[ "firewall_policy_resource" ] @@ -8124,215 +9645,61 @@ def get_message_fields(field): 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["firewall_policy_resource"][field])): - del request_init["firewall_policy_resource"][field][i][subfield] - else: - del request_init["firewall_policy_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.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - interceptor=None - if null_interceptor - else transports.RegionNetworkFirewallPoliciesRestInterceptor(), - ) - client = RegionNetworkFirewallPoliciesClient(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.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert" - ) as post, - mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_insert_with_metadata", - ) as post_with_metadata, - mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert" - ) as pre, - ): - pre.assert_not_called() - post.assert_not_called() - post_with_metadata.assert_not_called() - pb_message = compute.InsertRegionNetworkFirewallPolicyRequest.pb( - compute.InsertRegionNetworkFirewallPolicyRequest() - ) - 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.InsertRegionNetworkFirewallPolicyRequest() - 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.ListRegionNetworkFirewallPoliciesRequest, -): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "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.list(request) - - -@pytest.mark.parametrize( - "request_type", - [ - compute.ListRegionNetworkFirewallPoliciesRequest, - dict, - ], -) -def test_list_rest_call_success(request_type): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) + # For fields where the type is another message + if isinstance(value, dict): + result = value - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + 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["firewall_policy_resource"][field])): + del request_init["firewall_policy_resource"][field][i][subfield] + else: + del request_init["firewall_policy_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.FirewallPolicyList( - id="id_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", - next_page_token="next_page_token_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 @@ -8340,22 +9707,41 @@ def test_list_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicyList.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.patch(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListPager) - assert response.id == "id_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.next_page_token == "next_page_token_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_list_rest_interceptors(null_interceptor): +def test_patch_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -8368,21 +9754,21 @@ def test_list_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_list" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_list_with_metadata", + "post_patch_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_list" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.ListRegionNetworkFirewallPoliciesRequest.pb( - compute.ListRegionNetworkFirewallPoliciesRequest() + pb_message = compute.PatchRegionNetworkFirewallPolicyRequest.pb( + compute.PatchRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -8394,19 +9780,19 @@ 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.FirewallPolicyList.to_json(compute.FirewallPolicyList()) + return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.ListRegionNetworkFirewallPoliciesRequest() + request = compute.PatchRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicyList() - post_with_metadata.return_value = compute.FirewallPolicyList(), metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata - client.list( + client.patch( request, metadata=[ ("key", "val"), @@ -8419,8 +9805,8 @@ def test_list_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_patch_rest_bad_request( - request_type=compute.PatchRegionNetworkFirewallPolicyRequest, +def test_patch_association_rest_bad_request( + request_type=compute.PatchAssociationRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -8446,17 +9832,17 @@ def test_patch_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.patch(request) + client.patch_association(request) @pytest.mark.parametrize( "request_type", [ - compute.PatchRegionNetworkFirewallPolicyRequest, + compute.PatchAssociationRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_patch_rest_call_success(request_type): +def test_patch_association_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -8467,104 +9853,12 @@ def test_patch_rest_call_success(request_type): "region": "sample2", "firewall_policy": "sample3", } - request_init["firewall_policy_resource"] = { - "associations": [ - { - "attachment_target": "attachment_target_value", - "display_name": "display_name_value", - "firewall_policy_id": "firewall_policy_id_value", - "name": "name_value", - "short_name": "short_name_value", - } - ], - "creation_timestamp": "creation_timestamp_value", - "description": "description_value", + request_init["firewall_policy_association_resource"] = { + "attachment_target": "attachment_target_value", "display_name": "display_name_value", - "fingerprint": "fingerprint_value", - "id": 205, - "kind": "kind_value", + "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", - "packet_mirroring_rules": [ - { - "action": "action_value", - "description": "description_value", - "direction": "direction_value", - "disabled": True, - "enable_logging": True, - "kind": "kind_value", - "match": { - "dest_address_groups": [ - "dest_address_groups_value1", - "dest_address_groups_value2", - ], - "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], - "dest_ip_ranges": [ - "dest_ip_ranges_value1", - "dest_ip_ranges_value2", - ], - "dest_network_context": "dest_network_context_value", - "dest_network_type": "dest_network_type_value", - "dest_region_codes": [ - "dest_region_codes_value1", - "dest_region_codes_value2", - ], - "dest_threat_intelligences": [ - "dest_threat_intelligences_value1", - "dest_threat_intelligences_value2", - ], - "layer4_configs": [ - { - "ip_protocol": "ip_protocol_value", - "ports": ["ports_value1", "ports_value2"], - } - ], - "src_address_groups": [ - "src_address_groups_value1", - "src_address_groups_value2", - ], - "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], - "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], - "src_network_context": "src_network_context_value", - "src_network_type": "src_network_type_value", - "src_networks": ["src_networks_value1", "src_networks_value2"], - "src_region_codes": [ - "src_region_codes_value1", - "src_region_codes_value2", - ], - "src_secure_tags": [{"name": "name_value", "state": "state_value"}], - "src_threat_intelligences": [ - "src_threat_intelligences_value1", - "src_threat_intelligences_value2", - ], - }, - "priority": 898, - "rule_name": "rule_name_value", - "rule_tuple_count": 1737, - "security_profile_group": "security_profile_group_value", - "target_forwarding_rules": [ - "target_forwarding_rules_value1", - "target_forwarding_rules_value2", - ], - "target_resources": [ - "target_resources_value1", - "target_resources_value2", - ], - "target_secure_tags": {}, - "target_service_accounts": [ - "target_service_accounts_value1", - "target_service_accounts_value2", - ], - "target_type": "target_type_value", - "tls_inspect": True, - } - ], - "parent": "parent_value", - "policy_type": "policy_type_value", - "region": "region_value", - "rule_tuple_count": 1737, - "rules": {}, - "self_link": "self_link_value", - "self_link_with_id": "self_link_with_id_value", + "priority": 898, "short_name": "short_name_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -8572,8 +9866,8 @@ def test_patch_rest_call_success(request_type): # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.PatchRegionNetworkFirewallPolicyRequest.meta.fields[ - "firewall_policy_resource" + test_field = compute.PatchAssociationRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_association_resource" ] def get_message_fields(field): @@ -8603,7 +9897,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[ - "firewall_policy_resource" + "firewall_policy_association_resource" ].items(): # pragma: NO COVER result = None is_repeated = False @@ -8634,10 +9928,16 @@ def get_message_fields(field): subfield = subfield_to_delete.get("subfield") if subfield: if field_repeated: - for i in range(0, len(request_init["firewall_policy_resource"][field])): - del request_init["firewall_policy_resource"][field][i][subfield] + for i in range( + 0, len(request_init["firewall_policy_association_resource"][field]) + ): + del request_init["firewall_policy_association_resource"][field][i][ + subfield + ] else: - del request_init["firewall_policy_resource"][field][subfield] + del request_init["firewall_policy_association_resource"][field][ + subfield + ] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -8678,7 +9978,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_association(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -8707,7 +10007,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_patch_rest_interceptors(null_interceptor): +def test_patch_association_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -8720,21 +10020,23 @@ def test_patch_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_patch_association", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_patch_with_metadata", + "post_patch_association_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_patch_association", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.PatchRegionNetworkFirewallPolicyRequest.pb( - compute.PatchRegionNetworkFirewallPolicyRequest() + pb_message = compute.PatchAssociationRegionNetworkFirewallPolicyRequest.pb( + compute.PatchAssociationRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -8749,7 +10051,7 @@ def test_patch_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.PatchRegionNetworkFirewallPolicyRequest() + request = compute.PatchAssociationRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -8758,7 +10060,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_association( request, metadata=[ ("key", "val"), @@ -9497,7 +10799,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -9518,20 +10819,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -9617,7 +10912,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -9636,7 +10930,6 @@ def get_message_fields(field): # 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 @@ -10159,6 +11452,27 @@ 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_association_unary_empty_call_rest(): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.patch_association), "__call__" + ) as call: + client.patch_association_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.PatchAssociationRegionNetworkFirewallPolicyRequest() + 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_rule_unary_empty_call_rest(): @@ -10292,6 +11606,7 @@ def test_region_network_firewall_policies_base_transport(): "insert", "list", "patch", + "patch_association", "patch_rule", "remove_association", "remove_rule", @@ -10478,6 +11793,9 @@ def test_region_network_firewall_policies_client_transport_session_collision( session1 = client1.transport.patch._session session2 = client2.transport.patch._session assert session1 != session2 + session1 = client1.transport.patch_association._session + session2 = client2.transport.patch_association._session + assert session1 != session2 session1 = client1.transport.patch_rule._session session2 = client2.transport.patch_rule._session assert session1 != session2 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py index c5350184bfa1..e3ecb4eeb75e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,208 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NotificationEndpointAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NotificationEndpoint() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NotificationEndpointList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1012,7 +1222,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2220,7 +2429,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py index dfc1d137d3d1..5469165f49d9 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteRegionOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_wait_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.wait), "__call__") as call: + call.return_value = compute.Operation() + client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1353,7 +1493,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionOperationsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py index 2240284ee62a..dee3418a9d31 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,336 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SecurityPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.SecurityPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SecurityPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2562,7 +2900,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4535,9 +4872,10 @@ def test_add_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -5441,9 +5779,10 @@ def test_insert_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6009,9 +6348,10 @@ def test_patch_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6362,9 +6702,10 @@ def test_patch_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py index ffb1f1114282..382a4167d2f4 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -172,6 +180,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSnapshotSettingsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SnapshotSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionSnapshotSettingsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py index 2959800695cf..42d52da2afca 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Snapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2105,7 +2418,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionSnapshotsReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2425,7 +2737,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2468,7 +2784,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3967,7 +4287,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3986,7 +4305,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4516,7 +4834,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4537,20 +4854,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4636,7 +4947,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4655,7 +4965,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py index 2078b44e70f8..bb3a4d4f956e 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslCertificate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslCertificateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1948,7 +2088,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py index abff150f91d2..8a1d3f37997b 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslPoliciesList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_available_features_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_available_features), "__call__" + ) as call: + call.return_value = compute.SslPoliciesListAvailableFeaturesResponse() + client.list_available_features() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1932,7 +2140,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionSslPoliciesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2187,7 +2394,6 @@ def test_list_available_features_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py index 86f4725578f6..b4d0db0c9e48 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1950,7 +2123,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py index d87e0cfacef7..73d79657285c 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpsProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpsProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_certificates_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_certificates), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_certificates() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1956,7 +2197,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py index 7e8b9d8e4156..f8e7bed512d6 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetTcpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetTcpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1950,7 +2090,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py index b5e42a9d78e4..0f97866fdf4d 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.UrlMap() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.UrlMapList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_validate_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.validate), "__call__") as call: + call.return_value = compute.UrlMapsValidateResponse() + client.validate() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1911,7 +2150,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py index b9cc0204e62c..f07574976b81 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionZonesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ZoneList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -966,7 +1007,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionZonesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py index e04e1b59b41b..f0c445e26687 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py @@ -55,6 +55,14 @@ from google.cloud.compute_v1.services.regions import RegionsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Region() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1126,7 +1200,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py index c11f0146dbe8..2cccd270ee56 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReliabilityRisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReliabilityRisk() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReliabilityRisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReliabilityRisksListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1158,7 +1232,6 @@ def test_list_rest_required_fields(request_type=compute.ListReliabilityRisksRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py index 3391fad6acd2..6f70bf593ca1 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,212 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReservationBlocksGetResponse() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationBlocksListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1381,7 +1595,6 @@ def test_list_rest_required_fields(request_type=compute.ListReservationBlocksReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2141,7 +2354,11 @@ def test_set_iam_policy_rest_flattened(): parent_resource="parent_resource_value", resource="resource_value", zone_set_nested_policy_request_resource=compute.ZoneSetNestedPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2185,7 +2402,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): parent_resource="parent_resource_value", resource="resource_value", zone_set_nested_policy_request_resource=compute.ZoneSetNestedPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -2672,7 +2893,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -2691,7 +2911,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -3220,7 +3439,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_nested_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -3241,20 +3459,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -3343,7 +3555,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3362,7 +3573,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py index a883855bfbfd..ed245c0620a4 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReservationSlotsGetResponse() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.Operation() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_version_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_version), "__call__") as call: + call.return_value = compute.Operation() + client.get_version() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationSlotsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1991,7 +2164,6 @@ def test_list_rest_required_fields(request_type=compute.ListReservationSlotsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py index 6a2d72ce95dc..2a0067c9e663 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,280 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReservationSubBlocksGetResponse() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_version_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_version), "__call__") as call: + call.return_value = compute.Operation() + client.get_version() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationSubBlocksListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_report_faulty_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.report_faulty), "__call__" + ) as call: + call.return_value = compute.Operation() + client.report_faulty() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1805,7 +2087,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2963,7 +3244,11 @@ def test_set_iam_policy_rest_flattened(): parent_resource="parent_resource_value", resource="resource_value", zone_set_nested_policy_request_resource=compute.ZoneSetNestedPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3007,7 +3292,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): parent_resource="parent_resource_value", resource="resource_value", zone_set_nested_policy_request_resource=compute.ZoneSetNestedPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3494,7 +3783,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3513,7 +3801,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4505,7 +4792,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_nested_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4526,20 +4812,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4628,7 +4908,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4647,7 +4926,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py index 8bc35d53a898..15981d21011c 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,379 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ReservationAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Reservation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1350,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2363,7 +2743,6 @@ def test_list_rest_required_fields(request_type=compute.ListReservationsRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3485,7 +3864,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3528,7 +3911,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -4740,7 +5127,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4759,7 +5145,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -5844,7 +6229,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -5865,20 +6249,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -5964,7 +6342,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -5983,7 +6360,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py index 2c39c1ab543d..556a995a8b1f 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ResourcePolicyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ResourcePolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ResourcePolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1303,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2378,7 +2690,6 @@ def test_list_rest_required_fields(request_type=compute.ListResourcePoliciesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3104,7 +3415,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3147,7 +3462,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3949,7 +4268,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3968,7 +4286,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4852,7 +5169,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4873,20 +5189,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4972,7 +5282,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4991,7 +5300,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py index 499d393a68ce..6cd5dd386144 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.RolloutPlan() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RolloutPlansListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1865,7 +2005,6 @@ def test_list_rest_required_fields(request_type=compute.ListRolloutPlansRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py index 7b6e7526319d..3bfc9e7c9e29 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.rollouts import RolloutsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_advance_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.advance), "__call__") as call: + call.return_value = compute.Operation() + client.advance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Rollout() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RolloutsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_pause_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.pause), "__call__") as call: + call.return_value = compute.Operation() + client.pause() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resume), "__call__") as call: + call.return_value = compute.Operation() + client.resume() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2232,7 +2471,6 @@ def test_list_rest_required_fields(request_type=compute.ListRolloutsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py index a06d9b4a5c22..1889cfeb3493 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.routers import RoutersClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,762 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.RouterAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_named_set), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_route_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Router() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_named_set), "__call__" + ) as call: + call.return_value = compute.RoutersGetNamedSetResponse() + client.get_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_nat_ip_info_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_nat_ip_info), "__call__" + ) as call: + call.return_value = compute.NatIpInfoResponse() + client.get_nat_ip_info() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_nat_mapping_info_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_nat_mapping_info), "__call__" + ) as call: + call.return_value = compute.VmEndpointNatMappingsList() + client.get_nat_mapping_info() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_route_policy), "__call__" + ) as call: + call.return_value = compute.RoutersGetRoutePolicyResponse() + client.get_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_router_status_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_router_status), "__call__" + ) as call: + call.return_value = compute.RouterStatusResponse() + client.get_router_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RouterList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_bgp_routes_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_bgp_routes), "__call__" + ) as call: + call.return_value = compute.RoutersListBgpRoutes() + client.list_bgp_routes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_named_sets_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_named_sets), "__call__" + ) as call: + call.return_value = compute.RoutersListNamedSets() + client.list_named_sets() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_route_policies_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_route_policies), "__call__" + ) as call: + call.return_value = compute.RoutersListRoutePolicies() + client.list_route_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_named_set), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_route_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_preview_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.preview), "__call__") as call: + call.return_value = compute.RoutersPreviewResponse() + client.preview() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_named_set), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_route_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -958,7 +1722,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2960,7 +3723,6 @@ def test_get_nat_mapping_info_rest_required_fields( "natName", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3971,7 +4733,6 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4227,7 +4988,6 @@ def test_list_bgp_routes_rest_required_fields( "pageToken", "peer", "policyApplied", - "returnPartialSuccess", "routeType", ) ) @@ -4492,7 +5252,6 @@ def test_list_named_sets_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4760,7 +5519,6 @@ def test_list_route_policies_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py index f3879e42f234..c63e02b1eef6 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.routes import RoutesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Route() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RouteList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1848,7 +2023,6 @@ def test_list_rest_required_fields(request_type=compute.ListRoutesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py index 43116359b430..001c6ab09c02 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,408 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SecurityPoliciesAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SecurityPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.SecurityPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SecurityPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_preconfigured_expression_sets_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_preconfigured_expression_sets), "__call__" + ) as call: + call.return_value = ( + compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse() + ) + client.list_preconfigured_expression_sets() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1368,7 +1778,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2728,7 +3137,6 @@ def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2977,7 +3385,6 @@ def test_list_preconfigured_expression_sets_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4794,9 +5201,10 @@ def test_add_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -5811,9 +6219,10 @@ def test_insert_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6515,9 +6924,10 @@ def test_patch_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6860,9 +7270,10 @@ def test_patch_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py index a1047a2d9de4..7b7ff365c497 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ServiceAttachmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ServiceAttachment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ServiceAttachmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1307,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2405,7 +2717,6 @@ def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3137,7 +3448,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3180,7 +3495,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -4002,7 +4321,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4021,7 +4339,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4851,7 +5168,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4872,20 +5188,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4971,7 +5281,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4990,7 +5299,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py index e2a3c42f948d..ca5d86004c30 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -172,6 +180,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SnapshotSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SnapshotSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SnapshotSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py index 55d31d4c263e..173f9c1bd3c0 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Snapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2029,7 +2342,6 @@ def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2336,7 +2648,11 @@ def test_set_iam_policy_rest_flattened(): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2378,7 +2694,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): project="project_value", resource="resource_value", global_set_policy_request_resource=compute.GlobalSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -3805,7 +4125,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -3824,7 +4143,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4337,7 +4655,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["global_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4358,20 +4675,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4457,7 +4768,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4476,7 +4786,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py index 8b87f7f5d664..285ce4832ffa 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SslCertificateAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslCertificate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslCertificateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -985,7 +1160,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2141,7 +2315,6 @@ def test_list_rest_required_fields(request_type=compute.ListSslCertificatesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py index b0213e527dcd..64ef822744b6 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SslPoliciesAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslPoliciesList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_available_features_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_available_features), "__call__" + ) as call: + call.return_value = compute.SslPoliciesListAvailableFeaturesResponse() + client.list_available_features() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1212,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2119,7 +2361,6 @@ def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2368,7 +2609,6 @@ def test_list_available_features_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py index 003ddef3d876..523ae01d8fdc 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = StoragePoolTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.StoragePoolTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = StoragePoolTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.StoragePoolType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = StoragePoolTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.StoragePoolTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -988,7 +1097,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1430,7 +1538,6 @@ def test_list_rest_required_fields(request_type=compute.ListStoragePoolTypesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py index b964ec87f1fa..c32ea2b17f91 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,344 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.StoragePoolAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.StoragePool() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.StoragePoolList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_disks_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_disks), "__call__") as call: + call.return_value = compute.StoragePoolListDisks() + client.list_disks() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1315,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2355,7 +2700,6 @@ def test_list_rest_required_fields(request_type=compute.ListStoragePoolsRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2607,7 +2951,6 @@ def test_list_disks_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2939,7 +3282,11 @@ def test_set_iam_policy_rest_flattened(): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -2982,7 +3329,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): zone="zone_value", resource="resource_value", zone_set_policy_request_resource=compute.ZoneSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -4182,7 +4533,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -4201,7 +4551,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -4866,7 +5215,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["zone_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -4887,20 +5235,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -4986,7 +5328,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -5005,7 +5346,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py index 4867738b3eb2..2dc805702e7b 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,414 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SubnetworkAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_expand_ip_cidr_range_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.expand_ip_cidr_range), "__call__" + ) as call: + call.return_value = compute.Operation() + client.expand_ip_cidr_range() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Subnetwork() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SubnetworkList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.UsableSubnetworksAggregatedList() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_private_ip_google_access_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_private_ip_google_access), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_private_ip_google_access() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1385,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", "views", ) @@ -2765,7 +3180,6 @@ def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "views", ) ) @@ -3014,7 +3428,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProject", ) ) @@ -3737,7 +4150,11 @@ def test_set_iam_policy_rest_flattened(): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) mock_args.update(sample_request) @@ -3780,7 +4197,11 @@ def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): region="region_value", resource="resource_value", region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[compute.Binding(binding_id="binding_id_value")] + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_value") + ) + ] ), ) @@ -5270,7 +5691,6 @@ def test_get_iam_policy_rest_call_success(request_type): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -5289,7 +5709,6 @@ def test_get_iam_policy_rest_call_success(request_type): # 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 @@ -6275,7 +6694,6 @@ def test_set_iam_policy_rest_call_success(request_type): request_init["region_set_policy_request_resource"] = { "bindings": [ { - "binding_id": "binding_id_value", "condition": { "description": "description_value", "expression": "expression_value", @@ -6296,20 +6714,14 @@ def test_set_iam_policy_rest_call_success(request_type): "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, }, } @@ -6395,7 +6807,6 @@ def get_message_fields(field): # Designate an appropriate value for the returned response. return_value = compute.Policy( etag="etag_value", - iam_owned=True, version=774, ) @@ -6414,7 +6825,6 @@ def get_message_fields(field): # 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 diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py index 0797894eef26..df94c054c7b8 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetGrpcProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetGrpcProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1888,7 +2061,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py index 777b039fe63c..12ea3b375f62 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetHttpProxyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1233,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2148,7 +2388,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py index 7b0f115aa4d2..3687de84696f 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,379 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetHttpsProxyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpsProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpsProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_certificate_map_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_certificate_map), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_certificate_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_quic_override_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_quic_override), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_quic_override() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_certificates_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_certificates), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_certificates() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_policy_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1375,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2154,7 +2534,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpsProxiesRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py index 34a5efeec782..4b49180e18db 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetInstanceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetInstance() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetInstanceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -985,7 +1230,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2185,7 +2429,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetInstancesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py index f0258b180c4c..e589b4c0c888 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,447 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_health_check_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_health_check), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_health_check() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_instance_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_instance), "__call__") as call: + call.return_value = compute.Operation() + client.add_instance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetPoolAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetPool() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.TargetPoolInstanceHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetPoolList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_health_check_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_health_check), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_health_check() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_instance_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_instance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_instance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_backup_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_backup), "__call__") as call: + call.return_value = compute.Operation() + client.set_backup() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1777,7 +2226,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3159,7 +3607,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetPoolsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py index 02d047d0fcb7..642226190671 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,348 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetSslProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetSslProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_backend_service_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_backend_service), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_backend_service() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_certificate_map_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_certificate_map), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_certificate_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_proxy_header_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_proxy_header), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_proxy_header() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_certificates_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_certificates), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_certificates() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_policy_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1886,7 +2236,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetSslProxiesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py index 5be96b4940cc..c259b7611f3c 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,278 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetTcpProxyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetTcpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetTcpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_backend_service_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_backend_service), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_backend_service() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_proxy_header_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_proxy_header), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_proxy_header() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1270,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2146,7 +2425,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetTcpProxiesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py index 0c4ffc1fca8c..ffce1294d5ec 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetVpnGatewayAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetVpnGateway() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetVpnGatewayList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1200,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2196,7 +2403,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetVpnGatewaysReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py index 9648dbf2df73..460e6f2d87b2 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.url_maps import UrlMapsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,342 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.UrlMapsAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.UrlMap() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_invalidate_cache_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.invalidate_cache), "__call__" + ) as call: + call.return_value = compute.Operation() + client.invalidate_cache() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.UrlMapList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_validate_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.validate), "__call__") as call: + call.return_value = compute.UrlMapsValidateResponse() + client.validate() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -960,7 +1304,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2487,7 +2830,6 @@ def test_list_rest_required_fields(request_type=compute.ListUrlMapsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py index 5988ea9d356b..6c2e38dbfa7a 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.VpnGatewayAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.VpnGateway() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_status_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_status), "__call__") as call: + call.return_value = compute.VpnGatewaysGetStatusResponse() + client.get_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.VpnGatewayList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2352,7 +2627,6 @@ def test_list_rest_required_fields(request_type=compute.ListVpnGatewaysRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py index d520358006b2..3471509018ff 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.VpnTunnelAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.VpnTunnel() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.VpnTunnelList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1177,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2168,7 +2375,6 @@ def test_list_rest_required_fields(request_type=compute.ListVpnTunnelsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py index 50f98a7ab04c..d5b748e273b2 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.WireGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.WireGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1907,7 +2080,6 @@ def test_list_rest_required_fields(request_type=compute.ListWireGroupsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py index 9502820470a5..83de7ed9dbf5 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteZoneOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_wait_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.wait), "__call__") as call: + call.return_value = compute.Operation() + client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1334,7 +1474,6 @@ def test_list_rest_required_fields(request_type=compute.ListZoneOperationsReques "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py index 48e492285bc3..076a9a581f64 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.VmExtensionPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.VmExtensionPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1950,7 +2123,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py index a19f6af74541..c53aff4e06c2 100644 --- a/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py +++ b/packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py @@ -55,6 +55,14 @@ from google.cloud.compute_v1.services.zones import ZonesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -158,6 +166,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ZonesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Zone() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ZonesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ZoneList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-09-01", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1123,7 +1197,6 @@ def test_list_rest_required_fields(request_type=compute.ListZonesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/packages/google-cloud-dataform/google/cloud/dataform/__init__.py b/packages/google-cloud-dataform/google/cloud/dataform/__init__.py index 8447fa5fb426..183901fe27d7 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform/__init__.py +++ b/packages/google-cloud-dataform/google/cloud/dataform/__init__.py @@ -121,6 +121,7 @@ MoveRepositoryMetadata, MoveRepositoryRequest, NotebookRuntimeOptions, + OAuthConfig, PipelineConfig, PrivateResourceMetadata, PullGitCommitsRequest, @@ -281,6 +282,7 @@ "MoveRepositoryMetadata", "MoveRepositoryRequest", "NotebookRuntimeOptions", + "OAuthConfig", "PipelineConfig", "PrivateResourceMetadata", "PullGitCommitsRequest", diff --git a/packages/google-cloud-dataform/google/cloud/dataform_v1/__init__.py b/packages/google-cloud-dataform/google/cloud/dataform_v1/__init__.py index f19e6f3bff20..adec3ad84f5d 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform_v1/__init__.py +++ b/packages/google-cloud-dataform/google/cloud/dataform_v1/__init__.py @@ -120,6 +120,7 @@ MoveRepositoryMetadata, MoveRepositoryRequest, NotebookRuntimeOptions, + OAuthConfig, PipelineConfig, PrivateResourceMetadata, PullGitCommitsRequest, @@ -264,6 +265,7 @@ "MoveRepositoryMetadata", "MoveRepositoryRequest", "NotebookRuntimeOptions", + "OAuthConfig", "PipelineConfig", "PrivateResourceMetadata", "PullGitCommitsRequest", diff --git a/packages/google-cloud-dataform/google/cloud/dataform_v1/types/__init__.py b/packages/google-cloud-dataform/google/cloud/dataform_v1/types/__init__.py index 3a471a6f804b..ed81c76fd4a3 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform_v1/types/__init__.py +++ b/packages/google-cloud-dataform/google/cloud/dataform_v1/types/__init__.py @@ -101,6 +101,7 @@ MoveRepositoryMetadata, MoveRepositoryRequest, NotebookRuntimeOptions, + OAuthConfig, PipelineConfig, PrivateResourceMetadata, PullGitCommitsRequest, @@ -242,6 +243,7 @@ "MoveRepositoryMetadata", "MoveRepositoryRequest", "NotebookRuntimeOptions", + "OAuthConfig", "PipelineConfig", "PrivateResourceMetadata", "PullGitCommitsRequest", diff --git a/packages/google-cloud-dataform/google/cloud/dataform_v1/types/dataform.py b/packages/google-cloud-dataform/google/cloud/dataform_v1/types/dataform.py index 791e164dba2c..36322da763fd 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform_v1/types/dataform.py +++ b/packages/google-cloud-dataform/google/cloud/dataform_v1/types/dataform.py @@ -29,6 +29,7 @@ "DirectoryContentsView", "DataEncryptionState", "Repository", + "OAuthConfig", "PrivateResourceMetadata", "ListRepositoriesRequest", "ListRepositoriesResponse", @@ -282,6 +283,9 @@ class Repository(proto.Message): etc. The format of this field is a JSON string. This field is a member of `oneof`_ ``_internal_metadata``. + end_user_auth_config (google.cloud.dataform_v1.types.Repository.EndUserAuthConfig): + Optional. Includes configuration options for + end user authentication. """ class GitRemoteSettings(proto.Message): @@ -422,6 +426,22 @@ class WorkspaceCompilationOverrides(proto.Message): number=3, ) + class EndUserAuthConfig(proto.Message): + r"""Includes configuration options for repository end user + authentication. + + Attributes: + oauth_config (google.cloud.dataform_v1.types.OAuthConfig): + Optional. OAuth configuration for repository + end user authentication. + """ + + oauth_config: "OAuthConfig" = proto.Field( + proto.MESSAGE, + number=1, + message="OAuthConfig", + ) + name: str = proto.Field( proto.STRING, number=1, @@ -486,6 +506,27 @@ class WorkspaceCompilationOverrides(proto.Message): number=15, optional=True, ) + end_user_auth_config: EndUserAuthConfig = proto.Field( + proto.MESSAGE, + number=28, + message=EndUserAuthConfig, + ) + + +class OAuthConfig(proto.Message): + r"""OAuth configuration for end user authentication. + + Attributes: + additional_oauth_scopes (MutableSequence[str]): + Optional. Additional OAuth scopes to use for BigQuery + executions. Scopes always in use: + ``https://www.googleapis.com/auth/bigquery`` + """ + + additional_oauth_scopes: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=1, + ) class PrivateResourceMetadata(proto.Message): @@ -4056,6 +4097,10 @@ class InvocationConfig(proto.Message): service_account (str): Optional. The service account to run workflow invocations under. + end_user_auth_config (google.cloud.dataform_v1.types.InvocationConfig.EndUserAuthenticationConfig): + Optional. Configuration for end user authentication. Note + that this should not be set when ``service_account`` is + used. query_priority (google.cloud.dataform_v1.types.InvocationConfig.QueryPriority): Optional. Specifies the priority for query execution in BigQuery. More information can be @@ -4086,6 +4131,28 @@ class QueryPriority(proto.Enum): INTERACTIVE = 1 BATCH = 2 + class EndUserAuthenticationConfig(proto.Message): + r"""Includes configuration options for end user authentication. + + Attributes: + user_email (str): + Output only. Email address of the user to run + workflow invocations under. + oauth_config (google.cloud.dataform_v1.types.OAuthConfig): + Optional. OAuth configuration for end user + authentication. + """ + + user_email: str = proto.Field( + proto.STRING, + number=2, + ) + oauth_config: "OAuthConfig" = proto.Field( + proto.MESSAGE, + number=4, + message="OAuthConfig", + ) + included_targets: MutableSequence["Target"] = proto.RepeatedField( proto.MESSAGE, number=1, @@ -4111,6 +4178,11 @@ class QueryPriority(proto.Enum): proto.STRING, number=6, ) + end_user_auth_config: EndUserAuthenticationConfig = proto.Field( + proto.MESSAGE, + number=7, + message=EndUserAuthenticationConfig, + ) query_priority: QueryPriority = proto.Field( proto.ENUM, number=9, diff --git a/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/__init__.py b/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/__init__.py index bd1f1704168d..f6794cf2994e 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/__init__.py +++ b/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/__init__.py @@ -131,6 +131,7 @@ MoveRepositoryMetadata, MoveRepositoryRequest, NotebookRuntimeOptions, + OAuthConfig, PipelineConfig, PrivateResourceMetadata, PullGitCommitsRequest, @@ -292,6 +293,7 @@ "MoveRepositoryMetadata", "MoveRepositoryRequest", "NotebookRuntimeOptions", + "OAuthConfig", "PipelineConfig", "PrivateResourceMetadata", "PullGitCommitsRequest", diff --git a/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/__init__.py b/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/__init__.py index 8e9a2e2f2110..9b4201f848a4 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/__init__.py +++ b/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/__init__.py @@ -112,6 +112,7 @@ MoveRepositoryMetadata, MoveRepositoryRequest, NotebookRuntimeOptions, + OAuthConfig, PipelineConfig, PrivateResourceMetadata, PullGitCommitsRequest, @@ -270,6 +271,7 @@ "MoveRepositoryMetadata", "MoveRepositoryRequest", "NotebookRuntimeOptions", + "OAuthConfig", "PipelineConfig", "PrivateResourceMetadata", "PullGitCommitsRequest", diff --git a/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/dataform.py b/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/dataform.py index 108c1331228f..c644ae0181a7 100644 --- a/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/dataform.py +++ b/packages/google-cloud-dataform/google/cloud/dataform_v1beta1/types/dataform.py @@ -30,6 +30,7 @@ "DirectoryContentsView", "DataEncryptionState", "Repository", + "OAuthConfig", "PrivateResourceMetadata", "ListRepositoriesRequest", "ListRepositoriesResponse", @@ -302,6 +303,9 @@ class Repository(proto.Message): etc. The format of this field is a JSON string. This field is a member of `oneof`_ ``_internal_metadata``. + end_user_auth_config (google.cloud.dataform_v1beta1.types.Repository.EndUserAuthConfig): + Optional. Includes configuration options for + end user authentication. """ class GitRemoteSettings(proto.Message): @@ -452,6 +456,22 @@ class WorkspaceCompilationOverrides(proto.Message): number=3, ) + class EndUserAuthConfig(proto.Message): + r"""Includes configuration options for repository end user + authentication. + + Attributes: + oauth_config (google.cloud.dataform_v1beta1.types.OAuthConfig): + Optional. OAuth configuration for repository + end user authentication. + """ + + oauth_config: "OAuthConfig" = proto.Field( + proto.MESSAGE, + number=1, + message="OAuthConfig", + ) + name: str = proto.Field( proto.STRING, number=1, @@ -516,6 +536,27 @@ class WorkspaceCompilationOverrides(proto.Message): number=15, optional=True, ) + end_user_auth_config: EndUserAuthConfig = proto.Field( + proto.MESSAGE, + number=28, + message=EndUserAuthConfig, + ) + + +class OAuthConfig(proto.Message): + r"""OAuth configuration for end user authentication. + + Attributes: + additional_oauth_scopes (MutableSequence[str]): + Optional. Additional OAuth scopes to use for BigQuery + executions. Scopes always in use: + ``https://www.googleapis.com/auth/bigquery`` + """ + + additional_oauth_scopes: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=1, + ) class PrivateResourceMetadata(proto.Message): @@ -4455,6 +4496,10 @@ class InvocationConfig(proto.Message): service_account (str): Optional. The service account to run workflow invocations under. + end_user_auth_config (google.cloud.dataform_v1beta1.types.InvocationConfig.EndUserAuthenticationConfig): + Optional. Configuration for end user authentication. Note + that this should not be set when ``service_account`` is + used. query_priority (google.cloud.dataform_v1beta1.types.InvocationConfig.QueryPriority): Optional. Specifies the priority for query execution in BigQuery. More information can be @@ -4485,6 +4530,28 @@ class QueryPriority(proto.Enum): INTERACTIVE = 1 BATCH = 2 + class EndUserAuthenticationConfig(proto.Message): + r"""Includes configuration options for end user authentication. + + Attributes: + user_email (str): + Output only. Email address of the user to run + workflow invocations under. + oauth_config (google.cloud.dataform_v1beta1.types.OAuthConfig): + Optional. OAuth configuration for end user + authentication. + """ + + user_email: str = proto.Field( + proto.STRING, + number=2, + ) + oauth_config: "OAuthConfig" = proto.Field( + proto.MESSAGE, + number=4, + message="OAuthConfig", + ) + included_targets: MutableSequence["Target"] = proto.RepeatedField( proto.MESSAGE, number=1, @@ -4510,6 +4577,11 @@ class QueryPriority(proto.Enum): proto.STRING, number=6, ) + end_user_auth_config: EndUserAuthenticationConfig = proto.Field( + proto.MESSAGE, + number=7, + message=EndUserAuthenticationConfig, + ) query_priority: QueryPriority = proto.Field( proto.ENUM, number=9, diff --git a/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1/test_dataform.py b/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1/test_dataform.py index 55a4b452d682..c77d26eecaeb 100644 --- a/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1/test_dataform.py +++ b/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1/test_dataform.py @@ -45776,6 +45776,14 @@ def test_create_repository_rest_call_success(request_type): "kms_key_name": "kms_key_name_value", "data_encryption_state": {"kms_key_version_name": "kms_key_version_name_value"}, "internal_metadata": "internal_metadata_value", + "end_user_auth_config": { + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_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 @@ -46029,6 +46037,14 @@ def test_update_repository_rest_call_success(request_type): "kms_key_name": "kms_key_name_value", "data_encryption_state": {"kms_key_version_name": "kms_key_version_name_value"}, "internal_metadata": "internal_metadata_value", + "end_user_auth_config": { + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_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 @@ -51943,6 +51959,15 @@ def test_create_workflow_config_rest_call_success(request_type): "transitive_dependents_included": True, "fully_refresh_incremental_tables_enabled": True, "service_account": "service_account_value", + "end_user_auth_config": { + "user_email": "user_email_value", + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_value2", + ] + }, + }, "query_priority": 1, }, "cron_schedule": "cron_schedule_value", @@ -52198,6 +52223,15 @@ def test_update_workflow_config_rest_call_success(request_type): "transitive_dependents_included": True, "fully_refresh_incremental_tables_enabled": True, "service_account": "service_account_value", + "end_user_auth_config": { + "user_email": "user_email_value", + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_value2", + ] + }, + }, "query_priority": 1, }, "cron_schedule": "cron_schedule_value", @@ -52836,6 +52870,15 @@ def test_create_workflow_invocation_rest_call_success(request_type): "transitive_dependents_included": True, "fully_refresh_incremental_tables_enabled": True, "service_account": "service_account_value", + "end_user_auth_config": { + "user_email": "user_email_value", + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_value2", + ] + }, + }, "query_priority": 1, }, "state": 1, diff --git a/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1beta1/test_dataform.py b/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1beta1/test_dataform.py index 9148b2bbfd89..ec2b7210f635 100644 --- a/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1beta1/test_dataform.py +++ b/packages/google-cloud-dataform/tests/unit/gapic/dataform_v1beta1/test_dataform.py @@ -48778,6 +48778,14 @@ def test_create_repository_rest_call_success(request_type): "kms_key_name": "kms_key_name_value", "data_encryption_state": {"kms_key_version_name": "kms_key_version_name_value"}, "internal_metadata": "internal_metadata_value", + "end_user_auth_config": { + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_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 @@ -49031,6 +49039,14 @@ def test_update_repository_rest_call_success(request_type): "kms_key_name": "kms_key_name_value", "data_encryption_state": {"kms_key_version_name": "kms_key_version_name_value"}, "internal_metadata": "internal_metadata_value", + "end_user_auth_config": { + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_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 @@ -55735,6 +55751,15 @@ def test_create_workflow_config_rest_call_success(request_type): "transitive_dependents_included": True, "fully_refresh_incremental_tables_enabled": True, "service_account": "service_account_value", + "end_user_auth_config": { + "user_email": "user_email_value", + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_value2", + ] + }, + }, "query_priority": 1, }, "cron_schedule": "cron_schedule_value", @@ -56002,6 +56027,15 @@ def test_update_workflow_config_rest_call_success(request_type): "transitive_dependents_included": True, "fully_refresh_incremental_tables_enabled": True, "service_account": "service_account_value", + "end_user_auth_config": { + "user_email": "user_email_value", + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_value2", + ] + }, + }, "query_priority": 1, }, "cron_schedule": "cron_schedule_value", @@ -56652,6 +56686,15 @@ def test_create_workflow_invocation_rest_call_success(request_type): "transitive_dependents_included": True, "fully_refresh_incremental_tables_enabled": True, "service_account": "service_account_value", + "end_user_auth_config": { + "user_email": "user_email_value", + "oauth_config": { + "additional_oauth_scopes": [ + "additional_oauth_scopes_value1", + "additional_oauth_scopes_value2", + ] + }, + }, "query_priority": 1, }, "state": 1, diff --git a/packages/google-cloud-dialogflow/docs/dialogflow_v2/companion_agents.rst b/packages/google-cloud-dialogflow/docs/dialogflow_v2/companion_agents.rst new file mode 100644 index 000000000000..86079a9c300b --- /dev/null +++ b/packages/google-cloud-dialogflow/docs/dialogflow_v2/companion_agents.rst @@ -0,0 +1,10 @@ +CompanionAgents +--------------------------------- + +.. automodule:: google.cloud.dialogflow_v2.services.companion_agents + :members: + :inherited-members: + +.. automodule:: google.cloud.dialogflow_v2.services.companion_agents.pagers + :members: + :inherited-members: diff --git a/packages/google-cloud-dialogflow/docs/dialogflow_v2/services_.rst b/packages/google-cloud-dialogflow/docs/dialogflow_v2/services_.rst index 22d7fba84b66..043cc9276a96 100644 --- a/packages/google-cloud-dialogflow/docs/dialogflow_v2/services_.rst +++ b/packages/google-cloud-dialogflow/docs/dialogflow_v2/services_.rst @@ -5,6 +5,7 @@ Services for Google Cloud Dialogflow v2 API agents answer_records + companion_agents contexts conversation_datasets conversation_models diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py index 40ece2da8fa7..972e19f14123 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow/__init__.py @@ -26,6 +26,12 @@ from google.cloud.dialogflow_v2.services.answer_records.client import ( AnswerRecordsClient, ) +from google.cloud.dialogflow_v2.services.companion_agents.async_client import ( + CompanionAgentsAsyncClient, +) +from google.cloud.dialogflow_v2.services.companion_agents.client import ( + CompanionAgentsClient, +) from google.cloud.dialogflow_v2.services.contexts.async_client import ( ContextsAsyncClient, ) @@ -160,6 +166,16 @@ ) from google.cloud.dialogflow_v2.types.ces_app import CesAppSpec from google.cloud.dialogflow_v2.types.ces_tool import CesToolSpec +from google.cloud.dialogflow_v2.types.companion_agent import ( + CompanionAgent, + CreateCompanionAgentRequest, + DeleteCompanionAgentRequest, + GetCompanionAgentRequest, + GuidanceInstruction, + ListCompanionAgentsRequest, + ListCompanionAgentsResponse, + UpdateCompanionAgentRequest, +) from google.cloud.dialogflow_v2.types.context import ( Context, CreateContextRequest, @@ -348,6 +364,13 @@ ListGeneratorEvaluationsResponse, SummarizationEvaluationMetrics, ) +from google.cloud.dialogflow_v2.types.grounding import ( + GroundingChunk, + GroundingMetadata, + GroundingSupport, + SearchEntryPoint, + Segment, +) from google.cloud.dialogflow_v2.types.human_agent_assistant_event import ( HumanAgentAssistantEvent, ) @@ -385,11 +408,16 @@ AssistQueryParameters, AudioInput, AutomatedAgentReply, + BidiStreamingAnalyzeContentRequest, + BidiStreamingAnalyzeContentResponse, + CancelQuery, + CompanionSuggestion, CreateParticipantRequest, DatastoreResponseReason, DialogflowAssistAnswer, DtmfParameters, FaqAnswer, + GenerateCompanionSuggestionsResponse, GenerateSuggestionsResponse, GetParticipantRequest, IngestedContextReferenceDebugInfo, @@ -407,6 +435,8 @@ SmartReplyAnswer, StreamingAnalyzeContentRequest, StreamingAnalyzeContentResponse, + StreamingReactiveCompanionSuggestionsRequest, + StreamingReactiveCompanionSuggestionsResponse, SuggestArticlesRequest, SuggestArticlesResponse, SuggestFaqAnswersRequest, @@ -417,6 +447,8 @@ SuggestKnowledgeAssistResponse, SuggestSmartRepliesRequest, SuggestSmartRepliesResponse, + ToolCallEvents, + ToolCallSuggestion, UpdateParticipantRequest, ) from google.cloud.dialogflow_v2.types.session import ( @@ -489,6 +521,8 @@ "AgentsAsyncClient", "AnswerRecordsClient", "AnswerRecordsAsyncClient", + "CompanionAgentsClient", + "CompanionAgentsAsyncClient", "ContextsClient", "ContextsAsyncClient", "ConversationDatasetsClient", @@ -565,6 +599,14 @@ "TelephonyDtmf", "CesAppSpec", "CesToolSpec", + "CompanionAgent", + "CreateCompanionAgentRequest", + "DeleteCompanionAgentRequest", + "GetCompanionAgentRequest", + "GuidanceInstruction", + "ListCompanionAgentsRequest", + "ListCompanionAgentsResponse", + "UpdateCompanionAgentRequest", "Context", "CreateContextRequest", "DeleteAllContextsRequest", @@ -730,6 +772,11 @@ "ListGeneratorEvaluationsRequest", "ListGeneratorEvaluationsResponse", "SummarizationEvaluationMetrics", + "GroundingChunk", + "GroundingMetadata", + "GroundingSupport", + "SearchEntryPoint", + "Segment", "HumanAgentAssistantEvent", "BatchDeleteIntentsRequest", "BatchUpdateIntentsRequest", @@ -758,10 +805,15 @@ "AssistQueryParameters", "AudioInput", "AutomatedAgentReply", + "BidiStreamingAnalyzeContentRequest", + "BidiStreamingAnalyzeContentResponse", + "CancelQuery", + "CompanionSuggestion", "CreateParticipantRequest", "DialogflowAssistAnswer", "DtmfParameters", "FaqAnswer", + "GenerateCompanionSuggestionsResponse", "GenerateSuggestionsResponse", "GetParticipantRequest", "IngestedContextReferenceDebugInfo", @@ -779,6 +831,8 @@ "SmartReplyAnswer", "StreamingAnalyzeContentRequest", "StreamingAnalyzeContentResponse", + "StreamingReactiveCompanionSuggestionsRequest", + "StreamingReactiveCompanionSuggestionsResponse", "SuggestArticlesRequest", "SuggestArticlesResponse", "SuggestFaqAnswersRequest", @@ -789,6 +843,8 @@ "SuggestKnowledgeAssistResponse", "SuggestSmartRepliesRequest", "SuggestSmartRepliesResponse", + "ToolCallEvents", + "ToolCallSuggestion", "UpdateParticipantRequest", "DatastoreResponseReason", "CloudConversationDebuggingInfo", diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/__init__.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/__init__.py index 2e2dd219faf1..3efb2a89aae3 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/__init__.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/__init__.py @@ -28,6 +28,7 @@ __lazy_modules__ = { "google.cloud.dialogflow_v2.services.agents", "google.cloud.dialogflow_v2.services.answer_records", + "google.cloud.dialogflow_v2.services.companion_agents", "google.cloud.dialogflow_v2.services.contexts", "google.cloud.dialogflow_v2.services.conversation_datasets", "google.cloud.dialogflow_v2.services.conversation_models", @@ -54,6 +55,7 @@ "google.cloud.dialogflow_v2.types.audio_config", "google.cloud.dialogflow_v2.types.ces_app", "google.cloud.dialogflow_v2.types.ces_tool", + "google.cloud.dialogflow_v2.types.companion_agent", "google.cloud.dialogflow_v2.types.context", "google.cloud.dialogflow_v2.types.conversation", "google.cloud.dialogflow_v2.types.conversation_dataset", @@ -68,6 +70,7 @@ "google.cloud.dialogflow_v2.types.gcs", "google.cloud.dialogflow_v2.types.generator", "google.cloud.dialogflow_v2.types.generator_evaluation", + "google.cloud.dialogflow_v2.types.grounding", "google.cloud.dialogflow_v2.types.human_agent_assistant_event", "google.cloud.dialogflow_v2.types.intent", "google.cloud.dialogflow_v2.types.knowledge_base", @@ -87,6 +90,7 @@ from .services.agents import AgentsAsyncClient, AgentsClient from .services.answer_records import AnswerRecordsAsyncClient, AnswerRecordsClient +from .services.companion_agents import CompanionAgentsAsyncClient, CompanionAgentsClient from .services.contexts import ContextsAsyncClient, ContextsClient from .services.conversation_datasets import ( ConversationDatasetsAsyncClient, @@ -167,6 +171,16 @@ ) from .types.ces_app import CesAppSpec from .types.ces_tool import CesToolSpec +from .types.companion_agent import ( + CompanionAgent, + CreateCompanionAgentRequest, + DeleteCompanionAgentRequest, + GetCompanionAgentRequest, + GuidanceInstruction, + ListCompanionAgentsRequest, + ListCompanionAgentsResponse, + UpdateCompanionAgentRequest, +) from .types.context import ( Context, CreateContextRequest, @@ -355,6 +369,13 @@ ListGeneratorEvaluationsResponse, SummarizationEvaluationMetrics, ) +from .types.grounding import ( + GroundingChunk, + GroundingMetadata, + GroundingSupport, + SearchEntryPoint, + Segment, +) from .types.human_agent_assistant_event import HumanAgentAssistantEvent from .types.intent import ( BatchDeleteIntentsRequest, @@ -388,11 +409,16 @@ AssistQueryParameters, AudioInput, AutomatedAgentReply, + BidiStreamingAnalyzeContentRequest, + BidiStreamingAnalyzeContentResponse, + CancelQuery, + CompanionSuggestion, CreateParticipantRequest, DatastoreResponseReason, DialogflowAssistAnswer, DtmfParameters, FaqAnswer, + GenerateCompanionSuggestionsResponse, GenerateSuggestionsResponse, GetParticipantRequest, IngestedContextReferenceDebugInfo, @@ -410,6 +436,8 @@ SmartReplyAnswer, StreamingAnalyzeContentRequest, StreamingAnalyzeContentResponse, + StreamingReactiveCompanionSuggestionsRequest, + StreamingReactiveCompanionSuggestionsResponse, SuggestArticlesRequest, SuggestArticlesResponse, SuggestFaqAnswersRequest, @@ -420,6 +448,8 @@ SuggestKnowledgeAssistResponse, SuggestSmartRepliesRequest, SuggestSmartRepliesResponse, + ToolCallEvents, + ToolCallSuggestion, UpdateParticipantRequest, ) from .types.session import ( @@ -483,6 +513,7 @@ __all__ = ( "AgentsAsyncClient", "AnswerRecordsAsyncClient", + "CompanionAgentsAsyncClient", "ContextsAsyncClient", "ConversationDatasetsAsyncClient", "ConversationModelsAsyncClient", @@ -532,11 +563,17 @@ "BatchUpdateEntityTypesResponse", "BatchUpdateIntentsRequest", "BatchUpdateIntentsResponse", + "BidiStreamingAnalyzeContentRequest", + "BidiStreamingAnalyzeContentResponse", + "CancelQuery", "CesAppSpec", "CesToolSpec", "ClearSuggestionFeatureConfigOperationMetadata", "ClearSuggestionFeatureConfigRequest", "CloudConversationDebuggingInfo", + "CompanionAgent", + "CompanionAgentsClient", + "CompanionSuggestion", "CompleteConversationRequest", "Connection", "Context", @@ -554,6 +591,7 @@ "ConversationProfile", "ConversationProfilesClient", "ConversationsClient", + "CreateCompanionAgentRequest", "CreateContextRequest", "CreateConversationDatasetOperationMetadata", "CreateConversationDatasetRequest", @@ -579,6 +617,7 @@ "DatastoreResponseReason", "DeleteAgentRequest", "DeleteAllContextsRequest", + "DeleteCompanionAgentRequest", "DeleteContextRequest", "DeleteConversationDatasetOperationMetadata", "DeleteConversationDatasetRequest", @@ -627,6 +666,7 @@ "FulfillmentsClient", "GcsDestination", "GcsSources", + "GenerateCompanionSuggestionsResponse", "GenerateStatelessSuggestionRequest", "GenerateStatelessSuggestionResponse", "GenerateStatelessSummaryRequest", @@ -641,6 +681,7 @@ "GeneratorSuggestion", "GeneratorsClient", "GetAgentRequest", + "GetCompanionAgentRequest", "GetContextRequest", "GetConversationDatasetRequest", "GetConversationModelEvaluationRequest", @@ -663,6 +704,10 @@ "GetToolRequest", "GetValidationResultRequest", "GetVersionRequest", + "GroundingChunk", + "GroundingMetadata", + "GroundingSupport", + "GuidanceInstruction", "HumanAgentAssistantConfig", "HumanAgentAssistantEvent", "HumanAgentHandoffConfig", @@ -696,6 +741,8 @@ "KnowledgeOperationMetadata", "ListAnswerRecordsRequest", "ListAnswerRecordsResponse", + "ListCompanionAgentsRequest", + "ListCompanionAgentsResponse", "ListContextsRequest", "ListContextsResponse", "ListConversationDatasetsRequest", @@ -753,10 +800,12 @@ "RestoreAgentRequest", "SearchAgentsRequest", "SearchAgentsResponse", + "SearchEntryPoint", "SearchKnowledgeAnswer", "SearchKnowledgeDebugInfo", "SearchKnowledgeRequest", "SearchKnowledgeResponse", + "Segment", "Sentiment", "SentimentAnalysisRequestConfig", "SentimentAnalysisResult", @@ -782,6 +831,8 @@ "StreamingAnalyzeContentResponse", "StreamingDetectIntentRequest", "StreamingDetectIntentResponse", + "StreamingReactiveCompanionSuggestionsRequest", + "StreamingReactiveCompanionSuggestionsResponse", "StreamingRecognitionResult", "SuggestArticlesRequest", "SuggestArticlesResponse", @@ -809,7 +860,9 @@ "TextToSpeechSettings", "Tool", "ToolCall", + "ToolCallEvents", "ToolCallResult", + "ToolCallSuggestion", "ToolsClient", "ToolsetTool", "TrainAgentRequest", @@ -817,6 +870,7 @@ "UndeployConversationModelOperationMetadata", "UndeployConversationModelRequest", "UpdateAnswerRecordRequest", + "UpdateCompanionAgentRequest", "UpdateContextRequest", "UpdateConversationProfileRequest", "UpdateDocumentRequest", diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/gapic_metadata.json b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/gapic_metadata.json index 358fd29a9b20..73d484d767ef 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/gapic_metadata.json +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/gapic_metadata.json @@ -208,6 +208,100 @@ } } }, + "CompanionAgents": { + "clients": { + "grpc": { + "libraryClient": "CompanionAgentsClient", + "rpcs": { + "CreateCompanionAgent": { + "methods": [ + "create_companion_agent" + ] + }, + "DeleteCompanionAgent": { + "methods": [ + "delete_companion_agent" + ] + }, + "GetCompanionAgent": { + "methods": [ + "get_companion_agent" + ] + }, + "ListCompanionAgents": { + "methods": [ + "list_companion_agents" + ] + }, + "UpdateCompanionAgent": { + "methods": [ + "update_companion_agent" + ] + } + } + }, + "grpc-async": { + "libraryClient": "CompanionAgentsAsyncClient", + "rpcs": { + "CreateCompanionAgent": { + "methods": [ + "create_companion_agent" + ] + }, + "DeleteCompanionAgent": { + "methods": [ + "delete_companion_agent" + ] + }, + "GetCompanionAgent": { + "methods": [ + "get_companion_agent" + ] + }, + "ListCompanionAgents": { + "methods": [ + "list_companion_agents" + ] + }, + "UpdateCompanionAgent": { + "methods": [ + "update_companion_agent" + ] + } + } + }, + "rest": { + "libraryClient": "CompanionAgentsClient", + "rpcs": { + "CreateCompanionAgent": { + "methods": [ + "create_companion_agent" + ] + }, + "DeleteCompanionAgent": { + "methods": [ + "delete_companion_agent" + ] + }, + "GetCompanionAgent": { + "methods": [ + "get_companion_agent" + ] + }, + "ListCompanionAgents": { + "methods": [ + "list_companion_agents" + ] + }, + "UpdateCompanionAgent": { + "methods": [ + "update_companion_agent" + ] + } + } + } + } + }, "Contexts": { "clients": { "grpc": { @@ -1789,6 +1883,11 @@ "analyze_content" ] }, + "BidiStreamingAnalyzeContent": { + "methods": [ + "bidi_streaming_analyze_content" + ] + }, "CreateParticipant": { "methods": [ "create_participant" @@ -1809,6 +1908,11 @@ "streaming_analyze_content" ] }, + "StreamingReactiveCompanionSuggestions": { + "methods": [ + "streaming_reactive_companion_suggestions" + ] + }, "SuggestArticles": { "methods": [ "suggest_articles" @@ -1844,6 +1948,11 @@ "analyze_content" ] }, + "BidiStreamingAnalyzeContent": { + "methods": [ + "bidi_streaming_analyze_content" + ] + }, "CreateParticipant": { "methods": [ "create_participant" @@ -1864,6 +1973,11 @@ "streaming_analyze_content" ] }, + "StreamingReactiveCompanionSuggestions": { + "methods": [ + "streaming_reactive_companion_suggestions" + ] + }, "SuggestArticles": { "methods": [ "suggest_articles" @@ -1899,6 +2013,11 @@ "analyze_content" ] }, + "BidiStreamingAnalyzeContent": { + "methods": [ + "bidi_streaming_analyze_content" + ] + }, "CreateParticipant": { "methods": [ "create_participant" @@ -1919,6 +2038,11 @@ "streaming_analyze_content" ] }, + "StreamingReactiveCompanionSuggestions": { + "methods": [ + "streaming_reactive_companion_suggestions" + ] + }, "SuggestArticles": { "methods": [ "suggest_articles" diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/__init__.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/__init__.py new file mode 100644 index 000000000000..b904ae28d176 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 .async_client import CompanionAgentsAsyncClient +from .client import CompanionAgentsClient + +__all__ = ( + "CompanionAgentsClient", + "CompanionAgentsAsyncClient", +) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/async_client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/async_client.py new file mode 100644 index 000000000000..a92601c581aa --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/async_client.py @@ -0,0 +1,1216 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 logging as std_logging +import re +from collections import OrderedDict +from typing import ( + Callable, + Dict, + Mapping, + MutableMapping, + MutableSequence, + Optional, + Sequence, + Tuple, + Type, + Union, +) + +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_async as retries +from google.api_core.client_options import ClientOptions +from google.auth import credentials as ga_credentials # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.cloud.dialogflow_v2 import gapic_version as package_version + +try: + OptionalRetry = Union[retries.AsyncRetry, gapic_v1.method._MethodDefault, None] +except AttributeError: # pragma: NO COVER + OptionalRetry = Union[retries.AsyncRetry, object, None] # type: ignore + +import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +from google.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore + +from google.cloud.dialogflow_v2.services.companion_agents import pagers +from google.cloud.dialogflow_v2.types import ces_tool, companion_agent, toolset +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +from .client import CompanionAgentsClient +from .transports.base import DEFAULT_CLIENT_INFO, CompanionAgentsTransport +from .transports.grpc_asyncio import CompanionAgentsGrpcAsyncIOTransport + +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__) + + +class CompanionAgentsAsyncClient: + """Service for managing companion agents.""" + + _client: CompanionAgentsClient + + # Copy defaults from the synchronous client for use here. + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = CompanionAgentsClient.DEFAULT_ENDPOINT + DEFAULT_MTLS_ENDPOINT = CompanionAgentsClient.DEFAULT_MTLS_ENDPOINT + _DEFAULT_ENDPOINT_TEMPLATE = CompanionAgentsClient._DEFAULT_ENDPOINT_TEMPLATE + _DEFAULT_UNIVERSE = CompanionAgentsClient._DEFAULT_UNIVERSE + + ces_tool_path = staticmethod(CompanionAgentsClient.ces_tool_path) + parse_ces_tool_path = staticmethod(CompanionAgentsClient.parse_ces_tool_path) + companion_agent_path = staticmethod(CompanionAgentsClient.companion_agent_path) + parse_companion_agent_path = staticmethod( + CompanionAgentsClient.parse_companion_agent_path + ) + toolset_path = staticmethod(CompanionAgentsClient.toolset_path) + parse_toolset_path = staticmethod(CompanionAgentsClient.parse_toolset_path) + common_billing_account_path = staticmethod( + CompanionAgentsClient.common_billing_account_path + ) + parse_common_billing_account_path = staticmethod( + CompanionAgentsClient.parse_common_billing_account_path + ) + common_folder_path = staticmethod(CompanionAgentsClient.common_folder_path) + parse_common_folder_path = staticmethod( + CompanionAgentsClient.parse_common_folder_path + ) + common_organization_path = staticmethod( + CompanionAgentsClient.common_organization_path + ) + parse_common_organization_path = staticmethod( + CompanionAgentsClient.parse_common_organization_path + ) + common_project_path = staticmethod(CompanionAgentsClient.common_project_path) + parse_common_project_path = staticmethod( + CompanionAgentsClient.parse_common_project_path + ) + common_location_path = staticmethod(CompanionAgentsClient.common_location_path) + parse_common_location_path = staticmethod( + CompanionAgentsClient.parse_common_location_path + ) + + @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: + CompanionAgentsAsyncClient: The constructed client. + """ + sa_info_func = ( + CompanionAgentsClient.from_service_account_info.__func__ # type: ignore + ) + return sa_info_func(CompanionAgentsAsyncClient, info, *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: + CompanionAgentsAsyncClient: The constructed client. + """ + sa_file_func = ( + CompanionAgentsClient.from_service_account_file.__func__ # type: ignore + ) + return sa_file_func(CompanionAgentsAsyncClient, filename, *args, **kwargs) + + from_service_account_json = from_service_account_file + + @classmethod + def get_mtls_endpoint_and_cert_source( + cls, client_options: Optional[ClientOptions] = None + ): + """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. + """ + return CompanionAgentsClient.get_mtls_endpoint_and_cert_source(client_options) # type: ignore + + @property + def transport(self) -> CompanionAgentsTransport: + """Returns the transport used by the client instance. + + Returns: + CompanionAgentsTransport: The transport used by the client instance. + """ + return self._client.transport + + @property + def api_endpoint(self) -> str: + """Return the API endpoint used by the client instance. + + Returns: + str: The API endpoint used by the client instance. + """ + return self._client._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._client._universe_domain + + get_transport_class = CompanionAgentsClient.get_transport_class + + def __init__( + self, + *, + credentials: Optional[ga_credentials.Credentials] = None, + transport: Optional[ + Union[ + str, CompanionAgentsTransport, Callable[..., CompanionAgentsTransport] + ] + ] = "grpc_asyncio", + client_options: Optional[ClientOptions] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the companion agents async 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,CompanionAgentsTransport,Callable[..., CompanionAgentsTransport]]]): + The transport to use, or a Callable that constructs and returns a new transport to use. + If a Callable is given, it will be called with the same set of initialization + arguments as used in the CompanionAgentsTransport constructor. + If set to None, a transport is chosen automatically. + 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 ``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 = CompanionAgentsClient( + credentials=credentials, + transport=transport, + client_options=client_options, + client_info=client_info, + ) + + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + std_logging.DEBUG + ): # pragma: NO COVER + _LOGGER.debug( + "Created client `google.cloud.dialogflow_v2.CompanionAgentsAsyncClient`.", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "universeDomain": getattr( + self._client._transport._credentials, "universe_domain", "" + ), + "credentialsType": f"{type(self._client._transport._credentials).__module__}.{type(self._client._transport._credentials).__qualname__}", + "credentialsInfo": getattr( + self.transport._credentials, "get_cred_info", lambda: None + )(), + } + if hasattr(self._client._transport, "_credentials") + else { + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "credentialsType": None, + }, + ) + + async def create_companion_agent( + self, + request: Optional[ + Union[gcd_companion_agent.CreateCompanionAgentRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + companion_agent: Optional[gcd_companion_agent.CompanionAgent] = None, + companion_agent_id: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> gcd_companion_agent.CompanionAgent: + r"""Creates a companion agent. + + .. 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 dialogflow_v2 + + async def sample_create_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateCompanionAgentRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_companion_agent(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.dialogflow_v2.types.CreateCompanionAgentRequest, dict]]): + The request object. Request of CreateCompanionAgent. + parent (:class:`str`): + Required. Resource identifier of the project creating + the companion agent. Format: + ``projects/{project}/locations/{location}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + companion_agent (:class:`google.cloud.dialogflow_v2.types.CompanionAgent`): + Required. The companion agent to + create. + + This corresponds to the ``companion_agent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + companion_agent_id (:class:`str`): + Optional. The resource ID of the + companion agent to create. If not + provided, the server will auto-generate + a resource ID. + + This corresponds to the ``companion_agent_id`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry_async.AsyncRetry): 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.dialogflow_v2.types.CompanionAgent: + Companion agent. + """ + # 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 = [parent, companion_agent, companion_agent_id] + 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, gcd_companion_agent.CreateCompanionAgentRequest): + request = gcd_companion_agent.CreateCompanionAgentRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if companion_agent is not None: + request.companion_agent = companion_agent + if companion_agent_id is not None: + request.companion_agent_id = companion_agent_id + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.create_companion_agent + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def get_companion_agent( + self, + request: Optional[Union[companion_agent.GetCompanionAgentRequest, dict]] = None, + *, + name: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> companion_agent.CompanionAgent: + r"""Gets a companion agent. + + .. 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 dialogflow_v2 + + async def sample_get_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetCompanionAgentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_companion_agent(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.dialogflow_v2.types.GetCompanionAgentRequest, dict]]): + The request object. Request message for + GetCompanionAgent. + name (:class:`str`): + Required. The unique resource identifier of the + CompanionAgent to get all information for. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}``. + Contains the information about the {project}, + {location}, and {companion_agent}. + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry_async.AsyncRetry): 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.dialogflow_v2.types.CompanionAgent: + Companion agent. + """ + # 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 = [name] + 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, companion_agent.GetCompanionAgentRequest): + request = companion_agent.GetCompanionAgentRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.get_companion_agent + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def update_companion_agent( + self, + request: Optional[ + Union[gcd_companion_agent.UpdateCompanionAgentRequest, dict] + ] = None, + *, + companion_agent: Optional[gcd_companion_agent.CompanionAgent] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> gcd_companion_agent.CompanionAgent: + r"""Updates a companion agent. + + .. 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 dialogflow_v2 + + async def sample_update_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateCompanionAgentRequest( + ) + + # Make the request + response = await client.update_companion_agent(request=request) + + # Handle the response + print(response) + + Args: + request (Optional[Union[google.cloud.dialogflow_v2.types.UpdateCompanionAgentRequest, dict]]): + The request object. Request message for + UpdateCompanionAgent. + companion_agent (:class:`google.cloud.dialogflow_v2.types.CompanionAgent`): + Required. The Companion Agent to + update. + + This corresponds to the ``companion_agent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + update_mask (:class:`google.protobuf.field_mask_pb2.FieldMask`): + Optional. Update mask for Companion + Agent. + + This corresponds to the ``update_mask`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry_async.AsyncRetry): 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.dialogflow_v2.types.CompanionAgent: + Companion agent. + """ + # 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 = [companion_agent, update_mask] + 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, gcd_companion_agent.UpdateCompanionAgentRequest): + request = gcd_companion_agent.UpdateCompanionAgentRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if companion_agent is not None: + request.companion_agent = companion_agent + if update_mask is not None: + request.update_mask = update_mask + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.update_companion_agent + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("companion_agent.name", request.companion_agent.name),) + ), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def delete_companion_agent( + self, + request: Optional[ + Union[companion_agent.DeleteCompanionAgentRequest, dict] + ] = None, + *, + name: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Deletes a companion agent. + + .. 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 dialogflow_v2 + + async def sample_delete_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteCompanionAgentRequest( + name="name_value", + ) + + # Make the request + await client.delete_companion_agent(request=request) + + Args: + request (Optional[Union[google.cloud.dialogflow_v2.types.DeleteCompanionAgentRequest, dict]]): + The request object. Request message for + DeleteCompanionAgent. + name (:class:`str`): + Required. The unique resource identifier of the + CompanionAgent to delete. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}``. + + This corresponds to the ``name`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry_async.AsyncRetry): 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`. + """ + # 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 = [name] + 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, companion_agent.DeleteCompanionAgentRequest): + request = companion_agent.DeleteCompanionAgentRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.delete_companion_agent + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + async def list_companion_agents( + self, + request: Optional[ + Union[companion_agent.ListCompanionAgentsRequest, dict] + ] = None, + *, + parent: 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.ListCompanionAgentsAsyncPager: + r"""Lists companion agents. + + .. 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 dialogflow_v2 + + async def sample_list_companion_agents(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListCompanionAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_companion_agents(request=request) + + # Handle the response + async for response in page_result: + print(response) + + Args: + request (Optional[Union[google.cloud.dialogflow_v2.types.ListCompanionAgentsRequest, dict]]): + The request object. Request message for + ListCompanionAgents. + parent (:class:`str`): + Required. The parent resource name to list the companion + agents for. Format: + ``projects/{project}/locations/{location}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + retry (google.api_core.retry_async.AsyncRetry): 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.dialogflow_v2.services.companion_agents.pagers.ListCompanionAgentsAsyncPager: + Response message for + ListCompanionAgents. + 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 = [parent] + 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, companion_agent.ListCompanionAgentsRequest): + request = companion_agent.ListCompanionAgentsRequest(request) + + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.list_companion_agents + ] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # This method is paged; wrap the response in a pager, which provides + # an `__aiter__` convenience method. + response = pagers.ListCompanionAgentsAsyncPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def list_operations( + self, + request: Optional[Union[operations_pb2.ListOperationsRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.ListOperationsResponse: + r"""Lists operations that match the specified filter in the request. + + Args: + request (:class:`~.operations_pb2.ListOperationsRequest`): + The request object. Request message for + `ListOperations` method. + retry (google.api_core.retry_async.AsyncRetry): 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: + ~.operations_pb2.ListOperationsResponse: + Response message for ``ListOperations`` method. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.ListOperationsRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.ListOperationsRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self.transport._wrapped_methods[self._client._transport.list_operations] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def get_operation( + self, + request: Optional[Union[operations_pb2.GetOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Gets the latest state of a long-running operation. + + Args: + request (:class:`~.operations_pb2.GetOperationRequest`): + The request object. Request message for + `GetOperation` method. + retry (google.api_core.retry_async.AsyncRetry): 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: + ~.operations_pb2.Operation: + An ``Operation`` object. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.GetOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.GetOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self.transport._wrapped_methods[self._client._transport.get_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + retry (google.api_core.retry_async.AsyncRetry): 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: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self.transport._wrapped_methods[self._client._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + await rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + async def get_location( + self, + request: Optional[Union[locations_pb2.GetLocationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> locations_pb2.Location: + r"""Gets information about a location. + + Args: + request (:class:`~.location_pb2.GetLocationRequest`): + The request object. Request message for + `GetLocation` method. + retry (google.api_core.retry_async.AsyncRetry): 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: + ~.location_pb2.Location: + Location object. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = locations_pb2.GetLocationRequest() + elif isinstance(request, dict): + request_pb = locations_pb2.GetLocationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self.transport._wrapped_methods[self._client._transport.get_location] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def list_locations( + self, + request: Optional[Union[locations_pb2.ListLocationsRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> locations_pb2.ListLocationsResponse: + r"""Lists information about the supported locations for this service. + + Args: + request (:class:`~.location_pb2.ListLocationsRequest`): + The request object. Request message for + `ListLocations` method. + retry (google.api_core.retry_async.AsyncRetry): 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: + ~.location_pb2.ListLocationsResponse: + Response message for ``ListLocations`` method. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = locations_pb2.ListLocationsRequest() + elif isinstance(request, dict): + request_pb = locations_pb2.ListLocationsRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self.transport._wrapped_methods[self._client._transport.list_locations] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = await rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + async def __aenter__(self) -> "CompanionAgentsAsyncClient": + return self + + async def __aexit__(self, exc_type, exc, tb): + await self.transport.close() + + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +__all__ = ("CompanionAgentsAsyncClient",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/client.py new file mode 100644 index 000000000000..047ced8ddf21 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/client.py @@ -0,0 +1,1562 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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.dialogflow_v2 import gapic_version as package_version +from google.cloud.dialogflow_v2._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +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.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +from google.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore + +from google.cloud.dialogflow_v2.services.companion_agents import pagers +from google.cloud.dialogflow_v2.types import ces_tool, companion_agent, toolset +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +from .transports.base import DEFAULT_CLIENT_INFO, CompanionAgentsTransport +from .transports.grpc import CompanionAgentsGrpcTransport +from .transports.grpc_asyncio import CompanionAgentsGrpcAsyncIOTransport +from .transports.rest import CompanionAgentsRestTransport + + +class CompanionAgentsClientMeta(type): + """Metaclass for the CompanionAgents 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[CompanionAgentsTransport]] + _transport_registry["grpc"] = CompanionAgentsGrpcTransport + _transport_registry["grpc_asyncio"] = CompanionAgentsGrpcAsyncIOTransport + _transport_registry["rest"] = CompanionAgentsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[CompanionAgentsTransport]: + """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 CompanionAgentsClient(metaclass=CompanionAgentsClientMeta): + """Service for managing companion agents.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "dialogflow.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "dialogflow.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + CompanionAgentsClient: 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: + CompanionAgentsClient: 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) -> CompanionAgentsTransport: + """Returns the transport used by the client instance. + + Returns: + CompanionAgentsTransport: The transport used by the client + instance. + """ + return self._transport + + @staticmethod + def ces_tool_path( + project: str, + location: str, + app: str, + tool: str, + ) -> str: + """Returns a fully-qualified ces_tool string.""" + return "projects/{project}/locations/{location}/apps/{app}/tools/{tool}".format( + project=project, + location=location, + app=app, + tool=tool, + ) + + @staticmethod + def parse_ces_tool_path(path: str) -> Dict[str, str]: + """Parses a ces_tool path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/apps/(?P.+?)/tools/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def companion_agent_path( + project: str, + location: str, + companion_agent: str, + ) -> str: + """Returns a fully-qualified companion_agent string.""" + return "projects/{project}/locations/{location}/companionAgents/{companion_agent}".format( + project=project, + location=location, + companion_agent=companion_agent, + ) + + @staticmethod + def parse_companion_agent_path(path: str) -> Dict[str, str]: + """Parses a companion_agent path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/companionAgents/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @staticmethod + def toolset_path( + project: str, + location: str, + app: str, + toolset: str, + ) -> str: + """Returns a fully-qualified toolset string.""" + return "projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}".format( + project=project, + location=location, + app=app, + toolset=toolset, + ) + + @staticmethod + def parse_toolset_path(path: str) -> Dict[str, str]: + """Parses a toolset path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/apps/(?P.+?)/toolsets/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + + @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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, CompanionAgentsTransport, Callable[..., CompanionAgentsTransport] + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the companion agents 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,CompanionAgentsTransport,Callable[..., CompanionAgentsTransport]]]): + 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 CompanionAgentsTransport constructor. + If set to None, a transport is chosen automatically. + 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 = ( + read_environment_variables() + ) + self._client_cert_source = CompanionAgentsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=CompanionAgentsClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, CompanionAgentsTransport) + if transport_provided: + # transport is a CompanionAgentsTransport 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(CompanionAgentsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=CompanionAgentsClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=CompanionAgentsClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=CompanionAgentsClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[CompanionAgentsTransport], Callable[..., CompanionAgentsTransport] + ] = ( + CompanionAgentsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., CompanionAgentsTransport], 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.dialogflow_v2.CompanionAgentsClient`.", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "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.dialogflow.v2.CompanionAgents", + "credentialsType": None, + }, + ) + + def create_companion_agent( + self, + request: Optional[ + Union[gcd_companion_agent.CreateCompanionAgentRequest, dict] + ] = None, + *, + parent: Optional[str] = None, + companion_agent: Optional[gcd_companion_agent.CompanionAgent] = None, + companion_agent_id: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> gcd_companion_agent.CompanionAgent: + r"""Creates a companion agent. + + .. 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 dialogflow_v2 + + def sample_create_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateCompanionAgentRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_companion_agent(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.CreateCompanionAgentRequest, dict]): + The request object. Request of CreateCompanionAgent. + parent (str): + Required. Resource identifier of the project creating + the companion agent. Format: + ``projects/{project}/locations/{location}`` + + This corresponds to the ``parent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + companion_agent (google.cloud.dialogflow_v2.types.CompanionAgent): + Required. The companion agent to + create. + + This corresponds to the ``companion_agent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + companion_agent_id (str): + Optional. The resource ID of the + companion agent to create. If not + provided, the server will auto-generate + a resource ID. + + This corresponds to the ``companion_agent_id`` 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.dialogflow_v2.types.CompanionAgent: + Companion agent. + """ + # 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 = [parent, companion_agent, companion_agent_id] + 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, gcd_companion_agent.CreateCompanionAgentRequest): + request = gcd_companion_agent.CreateCompanionAgentRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + if companion_agent is not None: + request.companion_agent = companion_agent + if companion_agent_id is not None: + request.companion_agent_id = companion_agent_id + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.create_companion_agent] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # 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_companion_agent( + self, + request: Optional[Union[companion_agent.GetCompanionAgentRequest, dict]] = None, + *, + name: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> companion_agent.CompanionAgent: + r"""Gets a companion agent. + + .. 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 dialogflow_v2 + + def sample_get_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetCompanionAgentRequest( + name="name_value", + ) + + # Make the request + response = client.get_companion_agent(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.GetCompanionAgentRequest, dict]): + The request object. Request message for + GetCompanionAgent. + name (str): + Required. The unique resource identifier of the + CompanionAgent to get all information for. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}``. + Contains the information about the {project}, + {location}, and {companion_agent}. + + This corresponds to the ``name`` 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.dialogflow_v2.types.CompanionAgent: + Companion agent. + """ + # 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 = [name] + 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, companion_agent.GetCompanionAgentRequest): + request = companion_agent.GetCompanionAgentRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_companion_agent] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # 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 update_companion_agent( + self, + request: Optional[ + Union[gcd_companion_agent.UpdateCompanionAgentRequest, dict] + ] = None, + *, + companion_agent: Optional[gcd_companion_agent.CompanionAgent] = None, + update_mask: Optional[field_mask_pb2.FieldMask] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> gcd_companion_agent.CompanionAgent: + r"""Updates a companion agent. + + .. 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 dialogflow_v2 + + def sample_update_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateCompanionAgentRequest( + ) + + # Make the request + response = client.update_companion_agent(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.UpdateCompanionAgentRequest, dict]): + The request object. Request message for + UpdateCompanionAgent. + companion_agent (google.cloud.dialogflow_v2.types.CompanionAgent): + Required. The Companion Agent to + update. + + This corresponds to the ``companion_agent`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + update_mask (google.protobuf.field_mask_pb2.FieldMask): + Optional. Update mask for Companion + Agent. + + This corresponds to the ``update_mask`` 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.dialogflow_v2.types.CompanionAgent: + Companion agent. + """ + # 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 = [companion_agent, update_mask] + 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, gcd_companion_agent.UpdateCompanionAgentRequest): + request = gcd_companion_agent.UpdateCompanionAgentRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if companion_agent is not None: + request.companion_agent = companion_agent + if update_mask is not None: + request.update_mask = update_mask + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.update_companion_agent] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata( + (("companion_agent.name", request.companion_agent.name),) + ), + ) + + # 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_companion_agent( + self, + request: Optional[ + Union[companion_agent.DeleteCompanionAgentRequest, dict] + ] = None, + *, + name: Optional[str] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Deletes a companion agent. + + .. 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 dialogflow_v2 + + def sample_delete_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteCompanionAgentRequest( + name="name_value", + ) + + # Make the request + client.delete_companion_agent(request=request) + + Args: + request (Union[google.cloud.dialogflow_v2.types.DeleteCompanionAgentRequest, dict]): + The request object. Request message for + DeleteCompanionAgent. + name (str): + Required. The unique resource identifier of the + CompanionAgent to delete. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}``. + + This corresponds to the ``name`` 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`. + """ + # 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 = [name] + 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, companion_agent.DeleteCompanionAgentRequest): + request = companion_agent.DeleteCompanionAgentRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if name is not None: + request.name = name + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.delete_companion_agent] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + def list_companion_agents( + self, + request: Optional[ + Union[companion_agent.ListCompanionAgentsRequest, dict] + ] = None, + *, + parent: 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.ListCompanionAgentsPager: + r"""Lists companion agents. + + .. 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 dialogflow_v2 + + def sample_list_companion_agents(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListCompanionAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_companion_agents(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.dialogflow_v2.types.ListCompanionAgentsRequest, dict]): + The request object. Request message for + ListCompanionAgents. + parent (str): + Required. The parent resource name to list the companion + agents for. Format: + ``projects/{project}/locations/{location}`` + + This corresponds to the ``parent`` 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.dialogflow_v2.services.companion_agents.pagers.ListCompanionAgentsPager: + Response message for + ListCompanionAgents. + 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 = [parent] + 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, companion_agent.ListCompanionAgentsRequest): + request = companion_agent.ListCompanionAgentsRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if parent is not None: + request.parent = parent + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_companion_agents] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", request.parent),)), + ) + + # 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.ListCompanionAgentsPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def __enter__(self) -> "CompanionAgentsClient": + 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() + + def list_operations( + self, + request: Optional[Union[operations_pb2.ListOperationsRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.ListOperationsResponse: + r"""Lists operations that match the specified filter in the request. + + Args: + request (:class:`~.operations_pb2.ListOperationsRequest`): + The request object. Request message for + `ListOperations` method. + 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: + ~.operations_pb2.ListOperationsResponse: + Response message for ``ListOperations`` method. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.ListOperationsRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.ListOperationsRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_operations] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + try: + # Send the request. + response = rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + except core_exceptions.GoogleAPICallError as e: + self._add_cred_info_for_auth_errors(e) + raise e + + def get_operation( + self, + request: Optional[Union[operations_pb2.GetOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Gets the latest state of a long-running operation. + + Args: + request (:class:`~.operations_pb2.GetOperationRequest`): + The request object. Request message for + `GetOperation` method. + 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: + ~.operations_pb2.Operation: + An ``Operation`` object. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.GetOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.GetOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + try: + # Send the request. + response = rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + except core_exceptions.GoogleAPICallError as e: + self._add_cred_info_for_auth_errors(e) + raise e + + def cancel_operation( + self, + request: Optional[Union[operations_pb2.CancelOperationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Starts asynchronous cancellation on a long-running operation. + + The server makes a best effort to cancel the operation, but success + is not guaranteed. If the server doesn't support this method, it returns + `google.rpc.Code.UNIMPLEMENTED`. + + Args: + request (:class:`~.operations_pb2.CancelOperationRequest`): + The request object. Request message for + `CancelOperation` method. + 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: + None + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = operations_pb2.CancelOperationRequest() + elif isinstance(request, dict): + request_pb = operations_pb2.CancelOperationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.cancel_operation] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + def get_location( + self, + request: Optional[Union[locations_pb2.GetLocationRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> locations_pb2.Location: + r"""Gets information about a location. + + Args: + request (:class:`~.location_pb2.GetLocationRequest`): + The request object. Request message for + `GetLocation` method. + 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: + ~.location_pb2.Location: + Location object. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = locations_pb2.GetLocationRequest() + elif isinstance(request, dict): + request_pb = locations_pb2.GetLocationRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.get_location] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + try: + # Send the request. + response = rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + except core_exceptions.GoogleAPICallError as e: + self._add_cred_info_for_auth_errors(e) + raise e + + def list_locations( + self, + request: Optional[Union[locations_pb2.ListLocationsRequest, dict]] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> locations_pb2.ListLocationsResponse: + r"""Lists information about the supported locations for this service. + + Args: + request (:class:`~.location_pb2.ListLocationsRequest`): + The request object. Request message for + `ListLocations` method. + 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: + ~.location_pb2.ListLocationsResponse: + Response message for ``ListLocations`` method. + """ + # Create or coerce a protobuf request object. + # The request isn't a proto-plus wrapped type, + # so it must be constructed via keyword expansion. + if request is None: + request_pb = locations_pb2.ListLocationsRequest() + elif isinstance(request, dict): + request_pb = locations_pb2.ListLocationsRequest(**request) + else: + request_pb = request + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.list_locations] + + # Certain fields should be provided within the metadata header; + # add these here. + metadata = tuple(metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("name", request_pb.name),)), + ) + + # Validate the universe domain. + self._validate_universe_domain() + + try: + # Send the request. + response = rpc( + request_pb, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + except core_exceptions.GoogleAPICallError as e: + self._add_cred_info_for_auth_errors(e) + raise e + + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("CompanionAgentsClient",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/pagers.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/pagers.py new file mode 100644 index 000000000000..ea4d41624656 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/pagers.py @@ -0,0 +1,197 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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.dialogflow_v2.types import companion_agent + + +class ListCompanionAgentsPager: + """A pager for iterating through ``list_companion_agents`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListCompanionAgentsResponse` object, and + provides an ``__iter__`` method to iterate through its + ``companion_agents`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``ListCompanionAgents`` requests and continue to iterate + through the ``companion_agents`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListCompanionAgentsResponse` + 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[..., companion_agent.ListCompanionAgentsResponse], + request: companion_agent.ListCompanionAgentsRequest, + response: companion_agent.ListCompanionAgentsResponse, + *, + 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.dialogflow_v2.types.ListCompanionAgentsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListCompanionAgentsResponse): + 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 = companion_agent.ListCompanionAgentsRequest(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[companion_agent.ListCompanionAgentsResponse]: + 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[companion_agent.CompanionAgent]: + for page in self.pages: + yield from page.companion_agents + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListCompanionAgentsAsyncPager: + """A pager for iterating through ``list_companion_agents`` requests. + + This class thinly wraps an initial + :class:`google.cloud.dialogflow_v2.types.ListCompanionAgentsResponse` object, and + provides an ``__aiter__`` method to iterate through its + ``companion_agents`` field. + + If there are more pages, the ``__aiter__`` method will make additional + ``ListCompanionAgents`` requests and continue to iterate + through the ``companion_agents`` field on the + corresponding responses. + + All the usual :class:`google.cloud.dialogflow_v2.types.ListCompanionAgentsResponse` + 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[..., Awaitable[companion_agent.ListCompanionAgentsResponse]], + request: companion_agent.ListCompanionAgentsRequest, + response: companion_agent.ListCompanionAgentsResponse, + *, + retry: OptionalAsyncRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ): + """Instantiates the pager. + + Args: + method (Callable): The method that was originally called, and + which instantiated this pager. + request (google.cloud.dialogflow_v2.types.ListCompanionAgentsRequest): + The initial request object. + response (google.cloud.dialogflow_v2.types.ListCompanionAgentsResponse): + The initial response object. + retry (google.api_core.retry.AsyncRetry): 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 = companion_agent.ListCompanionAgentsRequest(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 + async def pages(self) -> AsyncIterator[companion_agent.ListCompanionAgentsResponse]: + yield self._response + while self._response.next_page_token: + self._request.page_token = self._response.next_page_token + self._response = await self._method( + self._request, + retry=self._retry, + timeout=self._timeout, + metadata=self._metadata, + ) + yield self._response + + def __aiter__(self) -> AsyncIterator[companion_agent.CompanionAgent]: + async def async_generator(): + async for page in self.pages: + for response in page.companion_agents: + yield response + + return async_generator() + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/README.rst b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/README.rst new file mode 100644 index 000000000000..5f5782c14ae0 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``CompanionAgentsTransport`` is the ABC for all transports. + +- public child ``CompanionAgentsGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``CompanionAgentsGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseCompanionAgentsRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``CompanionAgentsRestTransport`` 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-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/__init__.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/__init__.py new file mode 100644 index 000000000000..5e7dc36de0a7 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/__init__.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 CompanionAgentsTransport +from .grpc import CompanionAgentsGrpcTransport +from .grpc_asyncio import CompanionAgentsGrpcAsyncIOTransport +from .rest import CompanionAgentsRestInterceptor, CompanionAgentsRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[CompanionAgentsTransport]] +_transport_registry["grpc"] = CompanionAgentsGrpcTransport +_transport_registry["grpc_asyncio"] = CompanionAgentsGrpcAsyncIOTransport +_transport_registry["rest"] = CompanionAgentsRestTransport + +__all__ = ( + "CompanionAgentsTransport", + "CompanionAgentsGrpcTransport", + "CompanionAgentsGrpcAsyncIOTransport", + "CompanionAgentsRestTransport", + "CompanionAgentsRestInterceptor", +) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/base.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/base.py new file mode 100644 index 000000000000..7b98677941f7 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/base.py @@ -0,0 +1,323 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 Awaitable, Callable, Dict, Optional, Sequence, Union + +import google.api_core +import google.auth # type: ignore +import google.protobuf +import google.protobuf.empty_pb2 as empty_pb2 # type: ignore +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.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.oauth2 import service_account # type: ignore + +from google.cloud.dialogflow_v2 import gapic_version as package_version +from google.cloud.dialogflow_v2.types import companion_agent +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class CompanionAgentsTransport(abc.ABC): + """Abstract transport class for CompanionAgents.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ) + + DEFAULT_HOST: str = "dialogflow.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: 'dialogflow.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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.create_companion_agent: gapic_v1.method.wrap_method( + self.create_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.get_companion_agent: gapic_v1.method.wrap_method( + self.get_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.update_companion_agent: gapic_v1.method.wrap_method( + self.update_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.delete_companion_agent: gapic_v1.method.wrap_method( + self.delete_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.list_companion_agents: gapic_v1.method.wrap_method( + self.list_companion_agents, + default_timeout=None, + client_info=client_info, + ), + self.get_location: gapic_v1.method.wrap_method( + self.get_location, + default_timeout=None, + client_info=client_info, + ), + self.list_locations: gapic_v1.method.wrap_method( + self.list_locations, + default_timeout=None, + client_info=client_info, + ), + self.cancel_operation: gapic_v1.method.wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), + self.get_operation: gapic_v1.method.wrap_method( + self.get_operation, + default_timeout=None, + client_info=client_info, + ), + self.list_operations: gapic_v1.method.wrap_method( + self.list_operations, + 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 create_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.CreateCompanionAgentRequest], + Union[ + gcd_companion_agent.CompanionAgent, + Awaitable[gcd_companion_agent.CompanionAgent], + ], + ]: + raise NotImplementedError() + + @property + def get_companion_agent( + self, + ) -> Callable[ + [companion_agent.GetCompanionAgentRequest], + Union[ + companion_agent.CompanionAgent, Awaitable[companion_agent.CompanionAgent] + ], + ]: + raise NotImplementedError() + + @property + def update_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.UpdateCompanionAgentRequest], + Union[ + gcd_companion_agent.CompanionAgent, + Awaitable[gcd_companion_agent.CompanionAgent], + ], + ]: + raise NotImplementedError() + + @property + def delete_companion_agent( + self, + ) -> Callable[ + [companion_agent.DeleteCompanionAgentRequest], + Union[empty_pb2.Empty, Awaitable[empty_pb2.Empty]], + ]: + raise NotImplementedError() + + @property + def list_companion_agents( + self, + ) -> Callable[ + [companion_agent.ListCompanionAgentsRequest], + Union[ + companion_agent.ListCompanionAgentsResponse, + Awaitable[companion_agent.ListCompanionAgentsResponse], + ], + ]: + raise NotImplementedError() + + @property + def list_operations( + self, + ) -> Callable[ + [operations_pb2.ListOperationsRequest], + Union[ + operations_pb2.ListOperationsResponse, + Awaitable[operations_pb2.ListOperationsResponse], + ], + ]: + raise NotImplementedError() + + @property + def get_operation( + self, + ) -> Callable[ + [operations_pb2.GetOperationRequest], + Union[operations_pb2.Operation, Awaitable[operations_pb2.Operation]], + ]: + raise NotImplementedError() + + @property + def cancel_operation( + self, + ) -> Callable[ + [operations_pb2.CancelOperationRequest], + None, + ]: + raise NotImplementedError() + + @property + def get_location( + self, + ) -> Callable[ + [locations_pb2.GetLocationRequest], + Union[locations_pb2.Location, Awaitable[locations_pb2.Location]], + ]: + raise NotImplementedError() + + @property + def list_locations( + self, + ) -> Callable[ + [locations_pb2.ListLocationsRequest], + Union[ + locations_pb2.ListLocationsResponse, + Awaitable[locations_pb2.ListLocationsResponse], + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("CompanionAgentsTransport",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc.py new file mode 100644 index 000000000000..f0520b0468d9 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc.py @@ -0,0 +1,570 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +import logging as std_logging +import pickle +import warnings +from typing import Callable, Dict, Optional, Sequence, Tuple, Union + +import google.auth # type: ignore +import google.protobuf.empty_pb2 as empty_pb2 # type: ignore +import google.protobuf.message +import grpc # type: ignore +import proto # type: ignore +from google.api_core import gapic_v1, grpc_helpers +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore +from google.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf.json_format import MessageToJson + +from google.cloud.dialogflow_v2.types import companion_agent +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +from .base import DEFAULT_CLIENT_INFO, CompanionAgentsTransport + +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__) + + +class _LoggingClientInterceptor(grpc.UnaryUnaryClientInterceptor): # pragma: NO COVER + def intercept_unary_unary(self, continuation, client_call_details, request): + logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + std_logging.DEBUG + ) + if logging_enabled: # pragma: NO COVER + request_metadata = client_call_details.metadata + if isinstance(request, proto.Message): + request_payload = type(request).to_json(request) + elif isinstance(request, google.protobuf.message.Message): + request_payload = MessageToJson(request) + else: + request_payload = f"{type(request).__name__}: {pickle.dumps(request)!r}" + + request_metadata = { + key: value.decode("utf-8") if isinstance(value, bytes) else value + for key, value in request_metadata + } + grpc_request = { + "payload": request_payload, + "requestMethod": "grpc", + "metadata": dict(request_metadata), + } + _LOGGER.debug( + f"Sending request for {client_call_details.method}", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": str(client_call_details.method), + "request": grpc_request, + "metadata": grpc_request["metadata"], + }, + ) + response = continuation(client_call_details, request) + if logging_enabled: # pragma: NO COVER + response_metadata = response.trailing_metadata() + # Convert gRPC metadata `` to list of tuples + metadata = ( + dict([(k, str(v)) for k, v in response_metadata]) + if response_metadata + else None + ) + result = response.result() + if isinstance(result, proto.Message): + response_payload = type(result).to_json(result) + elif isinstance(result, google.protobuf.message.Message): + response_payload = MessageToJson(result) + else: + response_payload = f"{type(result).__name__}: {pickle.dumps(result)!r}" + grpc_response = { + "payload": response_payload, + "metadata": metadata, + "status": "OK", + } + _LOGGER.debug( + f"Received response for {client_call_details.method}.", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": client_call_details.method, + "response": grpc_response, + "metadata": grpc_response["metadata"], + }, + ) + return response + + +class CompanionAgentsGrpcTransport(CompanionAgentsTransport): + """gRPC backend transport for CompanionAgents. + + Service for managing companion agents. + + 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 protocol buffers over the wire using gRPC (which is built on + top of HTTP/2); the ``grpcio`` package must be installed. + """ + + _stubs: Dict[str, Callable] + + def __init__( + self, + *, + host: str = "dialogflow.googleapis.com", + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: Optional[Union[grpc.Channel, Callable[..., grpc.Channel]]] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = 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, + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to (default: 'dialogflow.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. + This argument is ignored if a ``channel`` instance is provided. + 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 a ``channel`` instance 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 a ``channel`` instance is provided. + channel (Optional[Union[grpc.Channel, Callable[..., grpc.Channel]]]): + A ``Channel`` instance through which to make calls, or a Callable + that constructs and returns one. If set to None, ``self.create_channel`` + is used to create the channel. If a Callable is given, it will be called + with the same arguments as used in ``self.create_channel``. + api_mtls_endpoint (Optional[str]): Deprecated. The mutual TLS endpoint. + If provided, it overrides the ``host`` argument and tries to create + a mutual TLS channel with client SSL credentials from + ``client_cert_source`` or application default SSL credentials. + client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): + Deprecated. A callback to provide client SSL certificate bytes and + private key bytes, both in PEM format. It is ignored if + ``api_mtls_endpoint`` is None. + ssl_channel_credentials (grpc.ChannelCredentials): SSL credentials + for the grpc channel. It is ignored if a ``channel`` instance is provided. + client_cert_source_for_mtls (Optional[Callable[[], Tuple[bytes, bytes]]]): + A callback to provide client certificate bytes and private key bytes, + both in PEM format. It is used to configure a mutual TLS channel. It is + ignored if a ``channel`` instance or ``ssl_channel_credentials`` 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're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + + Raises: + google.auth.exceptions.MutualTLSChannelError: If mutual TLS transport + creation failed for any reason. + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + self._grpc_channel = None + self._ssl_channel_credentials = ssl_channel_credentials + self._stubs: Dict[str, Callable] = {} + + if api_mtls_endpoint: + warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) + if client_cert_source: + warnings.warn("client_cert_source is deprecated", DeprecationWarning) + + if isinstance(channel, grpc.Channel): + # Ignore credentials if a channel was passed. + credentials = None + self._ignore_credentials = True + # If a channel was explicitly provided, set it. + self._grpc_channel = channel + self._ssl_channel_credentials = None + + else: + if api_mtls_endpoint: + host = api_mtls_endpoint + + # Create SSL credentials with client_cert_source or application + # default SSL credentials. + if client_cert_source: + cert, key = client_cert_source() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + else: + self._ssl_channel_credentials = SslCredentials().ssl_credentials + + else: + if client_cert_source_for_mtls and not ssl_channel_credentials: + cert, key = client_cert_source_for_mtls() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + + # The base transport sets the host, credentials and scopes + super().__init__( + host=host, + credentials=credentials, + credentials_file=credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + api_audience=api_audience, + ) + + if not self._grpc_channel: + # initialize with the provided callable or the default channel + channel_init = channel or type(self).create_channel + self._grpc_channel = channel_init( + self._host, + # use the credentials which are saved + credentials=self._credentials, + # Set ``credentials_file`` to ``None`` here as + # the credentials that we saved earlier should be used. + credentials_file=None, + scopes=self._scopes, + ssl_credentials=self._ssl_channel_credentials, + quota_project_id=quota_project_id, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + self._interceptor = _LoggingClientInterceptor() + self._logged_channel = grpc.intercept_channel( + self._grpc_channel, self._interceptor + ) + + # Wrap messages. This must be done after self._logged_channel exists + self._prep_wrapped_messages(client_info) + + @classmethod + def create_channel( + cls, + host: str = "dialogflow.googleapis.com", + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + **kwargs, + ) -> grpc.Channel: + """Create and return a gRPC channel object. + Args: + host (Optional[str]): The host for the channel to use. + credentials (Optional[~.Credentials]): The + authorization credentials to attach to requests. These + credentials identify this 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 optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + kwargs (Optional[dict]): Keyword arguments, which are passed to the + channel creation. + Returns: + grpc.Channel: A gRPC channel object. + + Raises: + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + + return grpc_helpers.create_channel( + host, + credentials=credentials, + credentials_file=credentials_file, + quota_project_id=quota_project_id, + default_scopes=cls.AUTH_SCOPES, + scopes=scopes, + default_host=cls.DEFAULT_HOST, + **kwargs, + ) + + @property + def grpc_channel(self) -> grpc.Channel: + """Return the channel designed to connect to this service.""" + return self._grpc_channel + + @property + def create_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.CreateCompanionAgentRequest], + gcd_companion_agent.CompanionAgent, + ]: + r"""Return a callable for the create companion agent method over gRPC. + + Creates a companion agent. + + Returns: + Callable[[~.CreateCompanionAgentRequest], + ~.CompanionAgent]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_companion_agent" not in self._stubs: + self._stubs["create_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/CreateCompanionAgent", + request_serializer=gcd_companion_agent.CreateCompanionAgentRequest.serialize, + response_deserializer=gcd_companion_agent.CompanionAgent.deserialize, + ) + return self._stubs["create_companion_agent"] + + @property + def get_companion_agent( + self, + ) -> Callable[ + [companion_agent.GetCompanionAgentRequest], companion_agent.CompanionAgent + ]: + r"""Return a callable for the get companion agent method over gRPC. + + Gets a companion agent. + + Returns: + Callable[[~.GetCompanionAgentRequest], + ~.CompanionAgent]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_companion_agent" not in self._stubs: + self._stubs["get_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/GetCompanionAgent", + request_serializer=companion_agent.GetCompanionAgentRequest.serialize, + response_deserializer=companion_agent.CompanionAgent.deserialize, + ) + return self._stubs["get_companion_agent"] + + @property + def update_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.UpdateCompanionAgentRequest], + gcd_companion_agent.CompanionAgent, + ]: + r"""Return a callable for the update companion agent method over gRPC. + + Updates a companion agent. + + Returns: + Callable[[~.UpdateCompanionAgentRequest], + ~.CompanionAgent]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "update_companion_agent" not in self._stubs: + self._stubs["update_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/UpdateCompanionAgent", + request_serializer=gcd_companion_agent.UpdateCompanionAgentRequest.serialize, + response_deserializer=gcd_companion_agent.CompanionAgent.deserialize, + ) + return self._stubs["update_companion_agent"] + + @property + def delete_companion_agent( + self, + ) -> Callable[[companion_agent.DeleteCompanionAgentRequest], empty_pb2.Empty]: + r"""Return a callable for the delete companion agent method over gRPC. + + Deletes a companion agent. + + Returns: + Callable[[~.DeleteCompanionAgentRequest], + ~.Empty]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "delete_companion_agent" not in self._stubs: + self._stubs["delete_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/DeleteCompanionAgent", + request_serializer=companion_agent.DeleteCompanionAgentRequest.serialize, + response_deserializer=empty_pb2.Empty.FromString, + ) + return self._stubs["delete_companion_agent"] + + @property + def list_companion_agents( + self, + ) -> Callable[ + [companion_agent.ListCompanionAgentsRequest], + companion_agent.ListCompanionAgentsResponse, + ]: + r"""Return a callable for the list companion agents method over gRPC. + + Lists companion agents. + + Returns: + Callable[[~.ListCompanionAgentsRequest], + ~.ListCompanionAgentsResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_companion_agents" not in self._stubs: + self._stubs["list_companion_agents"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/ListCompanionAgents", + request_serializer=companion_agent.ListCompanionAgentsRequest.serialize, + response_deserializer=companion_agent.ListCompanionAgentsResponse.deserialize, + ) + return self._stubs["list_companion_agents"] + + def close(self): + self._logged_channel.close() + + @property + def cancel_operation( + self, + ) -> Callable[[operations_pb2.CancelOperationRequest], None]: + r"""Return a callable for the cancel_operation method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "cancel_operation" not in self._stubs: + self._stubs["cancel_operation"] = self._logged_channel.unary_unary( + "/google.longrunning.Operations/CancelOperation", + request_serializer=operations_pb2.CancelOperationRequest.SerializeToString, + response_deserializer=None, + ) + return self._stubs["cancel_operation"] + + @property + def get_operation( + self, + ) -> Callable[[operations_pb2.GetOperationRequest], operations_pb2.Operation]: + r"""Return a callable for the get_operation method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_operation" not in self._stubs: + self._stubs["get_operation"] = self._logged_channel.unary_unary( + "/google.longrunning.Operations/GetOperation", + request_serializer=operations_pb2.GetOperationRequest.SerializeToString, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["get_operation"] + + @property + def list_operations( + self, + ) -> Callable[ + [operations_pb2.ListOperationsRequest], operations_pb2.ListOperationsResponse + ]: + r"""Return a callable for the list_operations method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_operations" not in self._stubs: + self._stubs["list_operations"] = self._logged_channel.unary_unary( + "/google.longrunning.Operations/ListOperations", + request_serializer=operations_pb2.ListOperationsRequest.SerializeToString, + response_deserializer=operations_pb2.ListOperationsResponse.FromString, + ) + return self._stubs["list_operations"] + + @property + def list_locations( + self, + ) -> Callable[ + [locations_pb2.ListLocationsRequest], locations_pb2.ListLocationsResponse + ]: + r"""Return a callable for the list locations method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_locations" not in self._stubs: + self._stubs["list_locations"] = self._logged_channel.unary_unary( + "/google.cloud.location.Locations/ListLocations", + request_serializer=locations_pb2.ListLocationsRequest.SerializeToString, + response_deserializer=locations_pb2.ListLocationsResponse.FromString, + ) + return self._stubs["list_locations"] + + @property + def get_location( + self, + ) -> Callable[[locations_pb2.GetLocationRequest], locations_pb2.Location]: + r"""Return a callable for the list locations method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_location" not in self._stubs: + self._stubs["get_location"] = self._logged_channel.unary_unary( + "/google.cloud.location.Locations/GetLocation", + request_serializer=locations_pb2.GetLocationRequest.SerializeToString, + response_deserializer=locations_pb2.Location.FromString, + ) + return self._stubs["get_location"] + + @property + def kind(self) -> str: + return "grpc" + + +__all__ = ("CompanionAgentsGrpcTransport",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc_asyncio.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc_asyncio.py new file mode 100644 index 000000000000..94d8e8b12fca --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/grpc_asyncio.py @@ -0,0 +1,641 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 inspect +import json +import logging as std_logging +import pickle +import warnings +from typing import Awaitable, Callable, Dict, Optional, Sequence, Tuple, Union + +import google.protobuf.empty_pb2 as empty_pb2 # type: ignore +import google.protobuf.message +import grpc # type: ignore +import proto # type: ignore +from google.api_core import exceptions as core_exceptions +from google.api_core import gapic_v1, grpc_helpers_async +from google.api_core import retry_async as retries +from google.auth import credentials as ga_credentials # type: ignore +from google.auth.transport.grpc import SslCredentials # type: ignore +from google.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf.json_format import MessageToJson +from grpc.experimental import aio # type: ignore + +from google.cloud.dialogflow_v2.types import companion_agent +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +from .base import DEFAULT_CLIENT_INFO, CompanionAgentsTransport +from .grpc import CompanionAgentsGrpcTransport + +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__) + + +class _LoggingClientAIOInterceptor( + grpc.aio.UnaryUnaryClientInterceptor +): # pragma: NO COVER + async def intercept_unary_unary(self, continuation, client_call_details, request): + logging_enabled = CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + std_logging.DEBUG + ) + if logging_enabled: # pragma: NO COVER + request_metadata = client_call_details.metadata + if isinstance(request, proto.Message): + request_payload = type(request).to_json(request) + elif isinstance(request, google.protobuf.message.Message): + request_payload = MessageToJson(request) + else: + request_payload = f"{type(request).__name__}: {pickle.dumps(request)!r}" + + request_metadata = { + key: value.decode("utf-8") if isinstance(value, bytes) else value + for key, value in request_metadata + } + grpc_request = { + "payload": request_payload, + "requestMethod": "grpc", + "metadata": dict(request_metadata), + } + _LOGGER.debug( + f"Sending request for {client_call_details.method}", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": str(client_call_details.method), + "request": grpc_request, + "metadata": grpc_request["metadata"], + }, + ) + response = await continuation(client_call_details, request) + if logging_enabled: # pragma: NO COVER + response_metadata = await response.trailing_metadata() + # Convert gRPC metadata `` to list of tuples + metadata = ( + dict([(k, str(v)) for k, v in response_metadata]) + if response_metadata + else None + ) + result = await response + if isinstance(result, proto.Message): + response_payload = type(result).to_json(result) + elif isinstance(result, google.protobuf.message.Message): + response_payload = MessageToJson(result) + else: + response_payload = f"{type(result).__name__}: {pickle.dumps(result)!r}" + grpc_response = { + "payload": response_payload, + "metadata": metadata, + "status": "OK", + } + _LOGGER.debug( + f"Received response to rpc {client_call_details.method}.", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": str(client_call_details.method), + "response": grpc_response, + "metadata": grpc_response["metadata"], + }, + ) + return response + + +class CompanionAgentsGrpcAsyncIOTransport(CompanionAgentsTransport): + """gRPC AsyncIO backend transport for CompanionAgents. + + Service for managing companion agents. + + 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 protocol buffers over the wire using gRPC (which is built on + top of HTTP/2); the ``grpcio`` package must be installed. + """ + + _grpc_channel: aio.Channel + _stubs: Dict[str, Callable] = {} + + @classmethod + def create_channel( + cls, + host: str = "dialogflow.googleapis.com", + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + quota_project_id: Optional[str] = None, + **kwargs, + ) -> aio.Channel: + """Create and return a gRPC AsyncIO channel object. + Args: + host (Optional[str]): The host for the channel to use. + credentials (Optional[~.Credentials]): The + authorization credentials to attach to requests. These + credentials identify this 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 will be + removed in the next major version of this library. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + quota_project_id (Optional[str]): An optional project to use for billing + and quota. + kwargs (Optional[dict]): Keyword arguments, which are passed to the + channel creation. + Returns: + aio.Channel: A gRPC AsyncIO channel object. + """ + + return grpc_helpers_async.create_channel( + host, + credentials=credentials, + credentials_file=credentials_file, + quota_project_id=quota_project_id, + default_scopes=cls.AUTH_SCOPES, + scopes=scopes, + default_host=cls.DEFAULT_HOST, + **kwargs, + ) + + def __init__( + self, + *, + host: str = "dialogflow.googleapis.com", + credentials: Optional[ga_credentials.Credentials] = None, + credentials_file: Optional[str] = None, + scopes: Optional[Sequence[str]] = None, + channel: Optional[Union[aio.Channel, Callable[..., aio.Channel]]] = None, + api_mtls_endpoint: Optional[str] = None, + client_cert_source: Optional[Callable[[], Tuple[bytes, bytes]]] = None, + ssl_channel_credentials: Optional[grpc.ChannelCredentials] = 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, + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to (default: 'dialogflow.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. + This argument is ignored if a ``channel`` instance is provided. + 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 a ``channel`` instance is provided. + This argument will be removed in the next major version of this library. + scopes (Optional[Sequence[str]]): A optional list of scopes needed for this + service. These are only used when credentials are not specified and + are passed to :func:`google.auth.default`. + channel (Optional[Union[aio.Channel, Callable[..., aio.Channel]]]): + A ``Channel`` instance through which to make calls, or a Callable + that constructs and returns one. If set to None, ``self.create_channel`` + is used to create the channel. If a Callable is given, it will be called + with the same arguments as used in ``self.create_channel``. + api_mtls_endpoint (Optional[str]): Deprecated. The mutual TLS endpoint. + If provided, it overrides the ``host`` argument and tries to create + a mutual TLS channel with client SSL credentials from + ``client_cert_source`` or application default SSL credentials. + client_cert_source (Optional[Callable[[], Tuple[bytes, bytes]]]): + Deprecated. A callback to provide client SSL certificate bytes and + private key bytes, both in PEM format. It is ignored if + ``api_mtls_endpoint`` is None. + ssl_channel_credentials (grpc.ChannelCredentials): SSL credentials + for the grpc channel. It is ignored if a ``channel`` instance is provided. + client_cert_source_for_mtls (Optional[Callable[[], Tuple[bytes, bytes]]]): + A callback to provide client certificate bytes and private key bytes, + both in PEM format. It is used to configure a mutual TLS channel. It is + ignored if a ``channel`` instance or ``ssl_channel_credentials`` 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're developing + your own client library. + always_use_jwt_access (Optional[bool]): Whether self signed JWT should + be used for service account credentials. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + + Raises: + google.auth.exceptions.MutualTlsChannelError: If mutual TLS transport + creation failed for any reason. + google.api_core.exceptions.DuplicateCredentialArgs: If both ``credentials`` + and ``credentials_file`` are passed. + """ + self._grpc_channel = None + self._ssl_channel_credentials = ssl_channel_credentials + self._stubs: Dict[str, Callable] = {} + + if api_mtls_endpoint: + warnings.warn("api_mtls_endpoint is deprecated", DeprecationWarning) + if client_cert_source: + warnings.warn("client_cert_source is deprecated", DeprecationWarning) + + if isinstance(channel, aio.Channel): + # Ignore credentials if a channel was passed. + credentials = None + self._ignore_credentials = True + # If a channel was explicitly provided, set it. + self._grpc_channel = channel + self._ssl_channel_credentials = None + else: + if api_mtls_endpoint: + host = api_mtls_endpoint + + # Create SSL credentials with client_cert_source or application + # default SSL credentials. + if client_cert_source: + cert, key = client_cert_source() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + else: + self._ssl_channel_credentials = SslCredentials().ssl_credentials + + else: + if client_cert_source_for_mtls and not ssl_channel_credentials: + cert, key = client_cert_source_for_mtls() + self._ssl_channel_credentials = grpc.ssl_channel_credentials( + certificate_chain=cert, private_key=key + ) + + # The base transport sets the host, credentials and scopes + super().__init__( + host=host, + credentials=credentials, + credentials_file=credentials_file, + scopes=scopes, + quota_project_id=quota_project_id, + client_info=client_info, + always_use_jwt_access=always_use_jwt_access, + api_audience=api_audience, + ) + + if not self._grpc_channel: + # initialize with the provided callable or the default channel + channel_init = channel or type(self).create_channel + self._grpc_channel = channel_init( + self._host, + # use the credentials which are saved + credentials=self._credentials, + # Set ``credentials_file`` to ``None`` here as + # the credentials that we saved earlier should be used. + credentials_file=None, + scopes=self._scopes, + ssl_credentials=self._ssl_channel_credentials, + quota_project_id=quota_project_id, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + self._interceptor = _LoggingClientAIOInterceptor() + self._grpc_channel._unary_unary_interceptors.append(self._interceptor) + self._logged_channel = self._grpc_channel + self._wrap_with_kind = ( + "kind" in inspect.signature(gapic_v1.method_async.wrap_method).parameters + ) + # Wrap messages. This must be done after self._logged_channel exists + self._prep_wrapped_messages(client_info) + + @property + def grpc_channel(self) -> aio.Channel: + """Create the channel designed to connect to this service. + + This property caches on the instance; repeated calls return + the same channel. + """ + # Return the channel from cache. + return self._grpc_channel + + @property + def create_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.CreateCompanionAgentRequest], + Awaitable[gcd_companion_agent.CompanionAgent], + ]: + r"""Return a callable for the create companion agent method over gRPC. + + Creates a companion agent. + + Returns: + Callable[[~.CreateCompanionAgentRequest], + Awaitable[~.CompanionAgent]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "create_companion_agent" not in self._stubs: + self._stubs["create_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/CreateCompanionAgent", + request_serializer=gcd_companion_agent.CreateCompanionAgentRequest.serialize, + response_deserializer=gcd_companion_agent.CompanionAgent.deserialize, + ) + return self._stubs["create_companion_agent"] + + @property + def get_companion_agent( + self, + ) -> Callable[ + [companion_agent.GetCompanionAgentRequest], + Awaitable[companion_agent.CompanionAgent], + ]: + r"""Return a callable for the get companion agent method over gRPC. + + Gets a companion agent. + + Returns: + Callable[[~.GetCompanionAgentRequest], + Awaitable[~.CompanionAgent]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_companion_agent" not in self._stubs: + self._stubs["get_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/GetCompanionAgent", + request_serializer=companion_agent.GetCompanionAgentRequest.serialize, + response_deserializer=companion_agent.CompanionAgent.deserialize, + ) + return self._stubs["get_companion_agent"] + + @property + def update_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.UpdateCompanionAgentRequest], + Awaitable[gcd_companion_agent.CompanionAgent], + ]: + r"""Return a callable for the update companion agent method over gRPC. + + Updates a companion agent. + + Returns: + Callable[[~.UpdateCompanionAgentRequest], + Awaitable[~.CompanionAgent]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "update_companion_agent" not in self._stubs: + self._stubs["update_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/UpdateCompanionAgent", + request_serializer=gcd_companion_agent.UpdateCompanionAgentRequest.serialize, + response_deserializer=gcd_companion_agent.CompanionAgent.deserialize, + ) + return self._stubs["update_companion_agent"] + + @property + def delete_companion_agent( + self, + ) -> Callable[ + [companion_agent.DeleteCompanionAgentRequest], Awaitable[empty_pb2.Empty] + ]: + r"""Return a callable for the delete companion agent method over gRPC. + + Deletes a companion agent. + + Returns: + Callable[[~.DeleteCompanionAgentRequest], + Awaitable[~.Empty]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "delete_companion_agent" not in self._stubs: + self._stubs["delete_companion_agent"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/DeleteCompanionAgent", + request_serializer=companion_agent.DeleteCompanionAgentRequest.serialize, + response_deserializer=empty_pb2.Empty.FromString, + ) + return self._stubs["delete_companion_agent"] + + @property + def list_companion_agents( + self, + ) -> Callable[ + [companion_agent.ListCompanionAgentsRequest], + Awaitable[companion_agent.ListCompanionAgentsResponse], + ]: + r"""Return a callable for the list companion agents method over gRPC. + + Lists companion agents. + + Returns: + Callable[[~.ListCompanionAgentsRequest], + Awaitable[~.ListCompanionAgentsResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_companion_agents" not in self._stubs: + self._stubs["list_companion_agents"] = self._logged_channel.unary_unary( + "/google.cloud.dialogflow.v2.CompanionAgents/ListCompanionAgents", + request_serializer=companion_agent.ListCompanionAgentsRequest.serialize, + response_deserializer=companion_agent.ListCompanionAgentsResponse.deserialize, + ) + return self._stubs["list_companion_agents"] + + def _prep_wrapped_messages(self, client_info): + """Precompute the wrapped methods, overriding the base class method to use async wrappers.""" + self._wrapped_methods = { + self.create_companion_agent: self._wrap_method( + self.create_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.get_companion_agent: self._wrap_method( + self.get_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.update_companion_agent: self._wrap_method( + self.update_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.delete_companion_agent: self._wrap_method( + self.delete_companion_agent, + default_timeout=None, + client_info=client_info, + ), + self.list_companion_agents: self._wrap_method( + self.list_companion_agents, + default_timeout=None, + client_info=client_info, + ), + self.get_location: self._wrap_method( + self.get_location, + default_timeout=None, + client_info=client_info, + ), + self.list_locations: self._wrap_method( + self.list_locations, + default_timeout=None, + client_info=client_info, + ), + self.cancel_operation: self._wrap_method( + self.cancel_operation, + default_timeout=None, + client_info=client_info, + ), + self.get_operation: self._wrap_method( + self.get_operation, + default_timeout=None, + client_info=client_info, + ), + self.list_operations: self._wrap_method( + self.list_operations, + default_timeout=None, + client_info=client_info, + ), + } + + def _wrap_method(self, func, *args, **kwargs): + if self._wrap_with_kind: # pragma: NO COVER + kwargs["kind"] = self.kind + return gapic_v1.method_async.wrap_method(func, *args, **kwargs) + + def close(self): + return self._logged_channel.close() + + @property + def kind(self) -> str: + return "grpc_asyncio" + + @property + def cancel_operation( + self, + ) -> Callable[[operations_pb2.CancelOperationRequest], None]: + r"""Return a callable for the cancel_operation method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "cancel_operation" not in self._stubs: + self._stubs["cancel_operation"] = self._logged_channel.unary_unary( + "/google.longrunning.Operations/CancelOperation", + request_serializer=operations_pb2.CancelOperationRequest.SerializeToString, + response_deserializer=None, + ) + return self._stubs["cancel_operation"] + + @property + def get_operation( + self, + ) -> Callable[[operations_pb2.GetOperationRequest], operations_pb2.Operation]: + r"""Return a callable for the get_operation method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_operation" not in self._stubs: + self._stubs["get_operation"] = self._logged_channel.unary_unary( + "/google.longrunning.Operations/GetOperation", + request_serializer=operations_pb2.GetOperationRequest.SerializeToString, + response_deserializer=operations_pb2.Operation.FromString, + ) + return self._stubs["get_operation"] + + @property + def list_operations( + self, + ) -> Callable[ + [operations_pb2.ListOperationsRequest], operations_pb2.ListOperationsResponse + ]: + r"""Return a callable for the list_operations method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_operations" not in self._stubs: + self._stubs["list_operations"] = self._logged_channel.unary_unary( + "/google.longrunning.Operations/ListOperations", + request_serializer=operations_pb2.ListOperationsRequest.SerializeToString, + response_deserializer=operations_pb2.ListOperationsResponse.FromString, + ) + return self._stubs["list_operations"] + + @property + def list_locations( + self, + ) -> Callable[ + [locations_pb2.ListLocationsRequest], locations_pb2.ListLocationsResponse + ]: + r"""Return a callable for the list locations method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "list_locations" not in self._stubs: + self._stubs["list_locations"] = self._logged_channel.unary_unary( + "/google.cloud.location.Locations/ListLocations", + request_serializer=locations_pb2.ListLocationsRequest.SerializeToString, + response_deserializer=locations_pb2.ListLocationsResponse.FromString, + ) + return self._stubs["list_locations"] + + @property + def get_location( + self, + ) -> Callable[[locations_pb2.GetLocationRequest], locations_pb2.Location]: + r"""Return a callable for the list locations method over gRPC.""" + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "get_location" not in self._stubs: + self._stubs["get_location"] = self._logged_channel.unary_unary( + "/google.cloud.location.Locations/GetLocation", + request_serializer=locations_pb2.GetLocationRequest.SerializeToString, + response_deserializer=locations_pb2.Location.FromString, + ) + return self._stubs["get_location"] + + +__all__ = ("CompanionAgentsGrpcAsyncIOTransport",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest.py new file mode 100644 index 000000000000..e6dfea3fb13a --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest.py @@ -0,0 +1,1998 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +import google.protobuf.empty_pb2 as empty_pb2 # type: ignore +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.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import json_format +from requests import __version__ as requests_version + +from google.cloud.dialogflow_v2._compat import transcode_request +from google.cloud.dialogflow_v2.types import companion_agent +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseCompanionAgentsRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class CompanionAgentsRestInterceptor: + """Interceptor for CompanionAgents. + + 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 CompanionAgentsRestTransport. + + .. code-block:: python + class MyCustomCompanionAgentsInterceptor(CompanionAgentsRestInterceptor): + def pre_create_companion_agent(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_create_companion_agent(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_delete_companion_agent(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def pre_get_companion_agent(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_get_companion_agent(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_list_companion_agents(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_list_companion_agents(self, response): + logging.log(f"Received response: {response}") + return response + + def pre_update_companion_agent(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_update_companion_agent(self, response): + logging.log(f"Received response: {response}") + return response + + transport = CompanionAgentsRestTransport(interceptor=MyCustomCompanionAgentsInterceptor()) + client = CompanionAgentsClient(transport=transport) + + + """ + + def pre_create_companion_agent( + self, + request: gcd_companion_agent.CreateCompanionAgentRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + gcd_companion_agent.CreateCompanionAgentRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for create_companion_agent + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_create_companion_agent( + self, response: gcd_companion_agent.CompanionAgent + ) -> gcd_companion_agent.CompanionAgent: + """Post-rpc interceptor for create_companion_agent + + DEPRECATED. Please use the `post_create_companion_agent_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. This `post_create_companion_agent` interceptor runs + before the `post_create_companion_agent_with_metadata` interceptor. + """ + return response + + def post_create_companion_agent_with_metadata( + self, + response: gcd_companion_agent.CompanionAgent, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + gcd_companion_agent.CompanionAgent, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for create_companion_agent + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanionAgents server but before it is returned to user code. + + We recommend only using this `post_create_companion_agent_with_metadata` + interceptor in new development instead of the `post_create_companion_agent` interceptor. + When both interceptors are used, this `post_create_companion_agent_with_metadata` interceptor runs after the + `post_create_companion_agent` interceptor. The (possibly modified) response returned by + `post_create_companion_agent` will be passed to + `post_create_companion_agent_with_metadata`. + """ + return response, metadata + + def pre_delete_companion_agent( + self, + request: companion_agent.DeleteCompanionAgentRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + companion_agent.DeleteCompanionAgentRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for delete_companion_agent + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def pre_get_companion_agent( + self, + request: companion_agent.GetCompanionAgentRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + companion_agent.GetCompanionAgentRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for get_companion_agent + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_get_companion_agent( + self, response: companion_agent.CompanionAgent + ) -> companion_agent.CompanionAgent: + """Post-rpc interceptor for get_companion_agent + + DEPRECATED. Please use the `post_get_companion_agent_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. This `post_get_companion_agent` interceptor runs + before the `post_get_companion_agent_with_metadata` interceptor. + """ + return response + + def post_get_companion_agent_with_metadata( + self, + response: companion_agent.CompanionAgent, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[companion_agent.CompanionAgent, Sequence[Tuple[str, Union[str, bytes]]]]: + """Post-rpc interceptor for get_companion_agent + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanionAgents server but before it is returned to user code. + + We recommend only using this `post_get_companion_agent_with_metadata` + interceptor in new development instead of the `post_get_companion_agent` interceptor. + When both interceptors are used, this `post_get_companion_agent_with_metadata` interceptor runs after the + `post_get_companion_agent` interceptor. The (possibly modified) response returned by + `post_get_companion_agent` will be passed to + `post_get_companion_agent_with_metadata`. + """ + return response, metadata + + def pre_list_companion_agents( + self, + request: companion_agent.ListCompanionAgentsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + companion_agent.ListCompanionAgentsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for list_companion_agents + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_list_companion_agents( + self, response: companion_agent.ListCompanionAgentsResponse + ) -> companion_agent.ListCompanionAgentsResponse: + """Post-rpc interceptor for list_companion_agents + + DEPRECATED. Please use the `post_list_companion_agents_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. This `post_list_companion_agents` interceptor runs + before the `post_list_companion_agents_with_metadata` interceptor. + """ + return response + + def post_list_companion_agents_with_metadata( + self, + response: companion_agent.ListCompanionAgentsResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + companion_agent.ListCompanionAgentsResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for list_companion_agents + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanionAgents server but before it is returned to user code. + + We recommend only using this `post_list_companion_agents_with_metadata` + interceptor in new development instead of the `post_list_companion_agents` interceptor. + When both interceptors are used, this `post_list_companion_agents_with_metadata` interceptor runs after the + `post_list_companion_agents` interceptor. The (possibly modified) response returned by + `post_list_companion_agents` will be passed to + `post_list_companion_agents_with_metadata`. + """ + return response, metadata + + def pre_update_companion_agent( + self, + request: gcd_companion_agent.UpdateCompanionAgentRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + gcd_companion_agent.UpdateCompanionAgentRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for update_companion_agent + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_update_companion_agent( + self, response: gcd_companion_agent.CompanionAgent + ) -> gcd_companion_agent.CompanionAgent: + """Post-rpc interceptor for update_companion_agent + + DEPRECATED. Please use the `post_update_companion_agent_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. This `post_update_companion_agent` interceptor runs + before the `post_update_companion_agent_with_metadata` interceptor. + """ + return response + + def post_update_companion_agent_with_metadata( + self, + response: gcd_companion_agent.CompanionAgent, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + gcd_companion_agent.CompanionAgent, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for update_companion_agent + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the CompanionAgents server but before it is returned to user code. + + We recommend only using this `post_update_companion_agent_with_metadata` + interceptor in new development instead of the `post_update_companion_agent` interceptor. + When both interceptors are used, this `post_update_companion_agent_with_metadata` interceptor runs after the + `post_update_companion_agent` interceptor. The (possibly modified) response returned by + `post_update_companion_agent` will be passed to + `post_update_companion_agent_with_metadata`. + """ + return response, metadata + + def pre_get_location( + self, + request: locations_pb2.GetLocationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + locations_pb2.GetLocationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for get_location + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_get_location( + self, response: locations_pb2.Location + ) -> locations_pb2.Location: + """Post-rpc interceptor for get_location + + Override in a subclass to manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. + """ + return response + + def pre_list_locations( + self, + request: locations_pb2.ListLocationsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + locations_pb2.ListLocationsRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for list_locations + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_list_locations( + self, response: locations_pb2.ListLocationsResponse + ) -> locations_pb2.ListLocationsResponse: + """Post-rpc interceptor for list_locations + + Override in a subclass to manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. + """ + return response + + def pre_cancel_operation( + self, + request: operations_pb2.CancelOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.CancelOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_cancel_operation(self, response: None) -> None: + """Post-rpc interceptor for cancel_operation + + Override in a subclass to manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. + """ + return response + + def pre_get_operation( + self, + request: operations_pb2.GetOperationRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.GetOperationRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for get_operation + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_get_operation( + self, response: operations_pb2.Operation + ) -> operations_pb2.Operation: + """Post-rpc interceptor for get_operation + + Override in a subclass to manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. + """ + return response + + def pre_list_operations( + self, + request: operations_pb2.ListOperationsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + operations_pb2.ListOperationsRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for list_operations + + Override in a subclass to manipulate the request or metadata + before they are sent to the CompanionAgents server. + """ + return request, metadata + + def post_list_operations( + self, response: operations_pb2.ListOperationsResponse + ) -> operations_pb2.ListOperationsResponse: + """Post-rpc interceptor for list_operations + + Override in a subclass to manipulate the response + after it is returned by the CompanionAgents server but before + it is returned to user code. + """ + return response + + +@dataclasses.dataclass +class CompanionAgentsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: CompanionAgentsRestInterceptor + + +class CompanionAgentsRestTransport(_BaseCompanionAgentsRestTransport): + """REST backend synchronous transport for CompanionAgents. + + Service for managing companion agents. + + 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 = "dialogflow.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[CompanionAgentsRestInterceptor] = None, + api_audience: Optional[str] = None, + ) -> None: + """Instantiate the transport. + + Args: + host (Optional[str]): + The hostname to connect to (default: 'dialogflow.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. + interceptor (Optional[CompanionAgentsRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 CompanionAgentsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _CreateCompanionAgent( + _BaseCompanionAgentsRestTransport._BaseCreateCompanionAgent, + CompanionAgentsRestStub, + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.CreateCompanionAgent") + + @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: gcd_companion_agent.CreateCompanionAgentRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> gcd_companion_agent.CompanionAgent: + r"""Call the create companion agent method over HTTP. + + Args: + request (~.gcd_companion_agent.CreateCompanionAgentRequest): + The request object. Request of CreateCompanionAgent. + 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: + ~.gcd_companion_agent.CompanionAgent: + Companion agent. + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseCreateCompanionAgent._get_http_options() + request, metadata = self._interceptor.pre_create_companion_agent( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseCreateCompanionAgent, + "_BaseCreateCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.dialogflow_v2.CompanionAgentsClient.CreateCompanionAgent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "CreateCompanionAgent", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._CreateCompanionAgent._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 = gcd_companion_agent.CompanionAgent() + pb_resp = gcd_companion_agent.CompanionAgent.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_create_companion_agent(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_create_companion_agent_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = gcd_companion_agent.CompanionAgent.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.dialogflow_v2.CompanionAgentsClient.create_companion_agent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "CreateCompanionAgent", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _DeleteCompanionAgent( + _BaseCompanionAgentsRestTransport._BaseDeleteCompanionAgent, + CompanionAgentsRestStub, + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.DeleteCompanionAgent") + + @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: companion_agent.DeleteCompanionAgentRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ): + r"""Call the delete companion agent method over HTTP. + + Args: + request (~.companion_agent.DeleteCompanionAgentRequest): + The request object. Request message for + DeleteCompanionAgent. + 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`. + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseDeleteCompanionAgent._get_http_options() + request, metadata = self._interceptor.pre_delete_companion_agent( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseDeleteCompanionAgent, + "_BaseDeleteCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.dialogflow_v2.CompanionAgentsClient.DeleteCompanionAgent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "DeleteCompanionAgent", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._DeleteCompanionAgent._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) + + class _GetCompanionAgent( + _BaseCompanionAgentsRestTransport._BaseGetCompanionAgent, + CompanionAgentsRestStub, + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.GetCompanionAgent") + + @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: companion_agent.GetCompanionAgentRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> companion_agent.CompanionAgent: + r"""Call the get companion agent method over HTTP. + + Args: + request (~.companion_agent.GetCompanionAgentRequest): + The request object. Request message for + GetCompanionAgent. + 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: + ~.companion_agent.CompanionAgent: + Companion agent. + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseGetCompanionAgent._get_http_options() + request, metadata = self._interceptor.pre_get_companion_agent( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseGetCompanionAgent, + "_BaseGetCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.dialogflow_v2.CompanionAgentsClient.GetCompanionAgent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "GetCompanionAgent", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._GetCompanionAgent._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 = companion_agent.CompanionAgent() + pb_resp = companion_agent.CompanionAgent.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_get_companion_agent(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_get_companion_agent_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = companion_agent.CompanionAgent.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.dialogflow_v2.CompanionAgentsClient.get_companion_agent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "GetCompanionAgent", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _ListCompanionAgents( + _BaseCompanionAgentsRestTransport._BaseListCompanionAgents, + CompanionAgentsRestStub, + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.ListCompanionAgents") + + @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: companion_agent.ListCompanionAgentsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> companion_agent.ListCompanionAgentsResponse: + r"""Call the list companion agents method over HTTP. + + Args: + request (~.companion_agent.ListCompanionAgentsRequest): + The request object. Request message for + ListCompanionAgents. + 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: + ~.companion_agent.ListCompanionAgentsResponse: + Response message for + ListCompanionAgents. + + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseListCompanionAgents._get_http_options() + request, metadata = self._interceptor.pre_list_companion_agents( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseListCompanionAgents, + "_BaseListCompanionAgents__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.dialogflow_v2.CompanionAgentsClient.ListCompanionAgents", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "ListCompanionAgents", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._ListCompanionAgents._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 = companion_agent.ListCompanionAgentsResponse() + pb_resp = companion_agent.ListCompanionAgentsResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_list_companion_agents(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_list_companion_agents_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = ( + companion_agent.ListCompanionAgentsResponse.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.dialogflow_v2.CompanionAgentsClient.list_companion_agents", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "ListCompanionAgents", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _UpdateCompanionAgent( + _BaseCompanionAgentsRestTransport._BaseUpdateCompanionAgent, + CompanionAgentsRestStub, + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.UpdateCompanionAgent") + + @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: gcd_companion_agent.UpdateCompanionAgentRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> gcd_companion_agent.CompanionAgent: + r"""Call the update companion agent method over HTTP. + + Args: + request (~.gcd_companion_agent.UpdateCompanionAgentRequest): + The request object. Request message for + UpdateCompanionAgent. + 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: + ~.gcd_companion_agent.CompanionAgent: + Companion agent. + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseUpdateCompanionAgent._get_http_options() + request, metadata = self._interceptor.pre_update_companion_agent( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseUpdateCompanionAgent, + "_BaseUpdateCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=True, + ) + + 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.dialogflow_v2.CompanionAgentsClient.UpdateCompanionAgent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "UpdateCompanionAgent", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._UpdateCompanionAgent._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 = gcd_companion_agent.CompanionAgent() + pb_resp = gcd_companion_agent.CompanionAgent.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_update_companion_agent(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_update_companion_agent_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = gcd_companion_agent.CompanionAgent.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.dialogflow_v2.CompanionAgentsClient.update_companion_agent", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "UpdateCompanionAgent", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def create_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.CreateCompanionAgentRequest], + gcd_companion_agent.CompanionAgent, + ]: + # 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._CreateCompanionAgent(self._session, self._host, self._interceptor) # type: ignore + + @property + def delete_companion_agent( + self, + ) -> Callable[[companion_agent.DeleteCompanionAgentRequest], empty_pb2.Empty]: + # 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._DeleteCompanionAgent(self._session, self._host, self._interceptor) # type: ignore + + @property + def get_companion_agent( + self, + ) -> Callable[ + [companion_agent.GetCompanionAgentRequest], companion_agent.CompanionAgent + ]: + # 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._GetCompanionAgent(self._session, self._host, self._interceptor) # type: ignore + + @property + def list_companion_agents( + self, + ) -> Callable[ + [companion_agent.ListCompanionAgentsRequest], + companion_agent.ListCompanionAgentsResponse, + ]: + # 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._ListCompanionAgents(self._session, self._host, self._interceptor) # type: ignore + + @property + def update_companion_agent( + self, + ) -> Callable[ + [gcd_companion_agent.UpdateCompanionAgentRequest], + gcd_companion_agent.CompanionAgent, + ]: + # 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._UpdateCompanionAgent(self._session, self._host, self._interceptor) # type: ignore + + @property + def get_location(self): + return self._GetLocation(self._session, self._host, self._interceptor) # type: ignore + + class _GetLocation( + _BaseCompanionAgentsRestTransport._BaseGetLocation, CompanionAgentsRestStub + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.GetLocation") + + @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: locations_pb2.GetLocationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> locations_pb2.Location: + r"""Call the get location method over HTTP. + + Args: + request (locations_pb2.GetLocationRequest): + The request object for GetLocation method. + 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: + locations_pb2.Location: Response from GetLocation method. + """ + + http_options = ( + _BaseCompanionAgentsRestTransport._BaseGetLocation._get_http_options() + ) + request, metadata = self._interceptor.pre_get_location(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseGetLocation, + "_BaseGetLocation__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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 = json_format.MessageToJson(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.dialogflow_v2.CompanionAgentsClient.GetLocation", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "GetLocation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._GetLocation._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) + + content = response.content.decode("utf-8") + resp = locations_pb2.Location() + resp = json_format.Parse(content, resp) + resp = self._interceptor.post_get_location(resp) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = json_format.MessageToJson(resp) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.GetLocation", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "GetLocation", + "httpResponse": http_response, + "metadata": http_response["headers"], + }, + ) + return resp + + @property + def list_locations(self): + return self._ListLocations(self._session, self._host, self._interceptor) # type: ignore + + class _ListLocations( + _BaseCompanionAgentsRestTransport._BaseListLocations, CompanionAgentsRestStub + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.ListLocations") + + @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: locations_pb2.ListLocationsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> locations_pb2.ListLocationsResponse: + r"""Call the list locations method over HTTP. + + Args: + request (locations_pb2.ListLocationsRequest): + The request object for ListLocations method. + 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: + locations_pb2.ListLocationsResponse: Response from ListLocations method. + """ + + http_options = ( + _BaseCompanionAgentsRestTransport._BaseListLocations._get_http_options() + ) + request, metadata = self._interceptor.pre_list_locations(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseListLocations, + "_BaseListLocations__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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 = json_format.MessageToJson(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.dialogflow_v2.CompanionAgentsClient.ListLocations", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "ListLocations", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._ListLocations._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) + + content = response.content.decode("utf-8") + resp = locations_pb2.ListLocationsResponse() + resp = json_format.Parse(content, resp) + resp = self._interceptor.post_list_locations(resp) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = json_format.MessageToJson(resp) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.ListLocations", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "ListLocations", + "httpResponse": http_response, + "metadata": http_response["headers"], + }, + ) + return resp + + @property + def cancel_operation(self): + return self._CancelOperation(self._session, self._host, self._interceptor) # type: ignore + + class _CancelOperation( + _BaseCompanionAgentsRestTransport._BaseCancelOperation, CompanionAgentsRestStub + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.CancelOperation") + + @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: operations_pb2.CancelOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> None: + r"""Call the cancel operation method over HTTP. + + Args: + request (operations_pb2.CancelOperationRequest): + The request object for CancelOperation method. + 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`. + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseCancelOperation._get_http_options() + request, metadata = self._interceptor.pre_cancel_operation( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseCancelOperation, + "_BaseCancelOperation__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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 = json_format.MessageToJson(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.dialogflow_v2.CompanionAgentsClient.CancelOperation", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "CancelOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._CancelOperation._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 self._interceptor.post_cancel_operation(None) + + @property + def get_operation(self): + return self._GetOperation(self._session, self._host, self._interceptor) # type: ignore + + class _GetOperation( + _BaseCompanionAgentsRestTransport._BaseGetOperation, CompanionAgentsRestStub + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.GetOperation") + + @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: operations_pb2.GetOperationRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.Operation: + r"""Call the get operation method over HTTP. + + Args: + request (operations_pb2.GetOperationRequest): + The request object for GetOperation method. + 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: + operations_pb2.Operation: Response from GetOperation method. + """ + + http_options = ( + _BaseCompanionAgentsRestTransport._BaseGetOperation._get_http_options() + ) + request, metadata = self._interceptor.pre_get_operation(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseGetOperation, + "_BaseGetOperation__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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 = json_format.MessageToJson(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.dialogflow_v2.CompanionAgentsClient.GetOperation", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "GetOperation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._GetOperation._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) + + content = response.content.decode("utf-8") + resp = operations_pb2.Operation() + resp = json_format.Parse(content, resp) + resp = self._interceptor.post_get_operation(resp) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = json_format.MessageToJson(resp) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.GetOperation", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "GetOperation", + "httpResponse": http_response, + "metadata": http_response["headers"], + }, + ) + return resp + + @property + def list_operations(self): + return self._ListOperations(self._session, self._host, self._interceptor) # type: ignore + + class _ListOperations( + _BaseCompanionAgentsRestTransport._BaseListOperations, CompanionAgentsRestStub + ): + def __hash__(self): + return hash("CompanionAgentsRestTransport.ListOperations") + + @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: operations_pb2.ListOperationsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> operations_pb2.ListOperationsResponse: + r"""Call the list operations method over HTTP. + + Args: + request (operations_pb2.ListOperationsRequest): + The request object for ListOperations method. + 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: + operations_pb2.ListOperationsResponse: Response from ListOperations method. + """ + + http_options = _BaseCompanionAgentsRestTransport._BaseListOperations._get_http_options() + request, metadata = self._interceptor.pre_list_operations(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseCompanionAgentsRestTransport._BaseListOperations, + "_BaseListOperations__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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 = json_format.MessageToJson(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.dialogflow_v2.CompanionAgentsClient.ListOperations", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "ListOperations", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = CompanionAgentsRestTransport._ListOperations._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) + + content = response.content.decode("utf-8") + resp = operations_pb2.ListOperationsResponse() + resp = json_format.Parse(content, resp) + resp = self._interceptor.post_list_operations(resp) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = json_format.MessageToJson(resp) + except: + response_payload = None + http_response = { + "payload": response_payload, + "headers": dict(response.headers), + "status": response.status_code, + } + _LOGGER.debug( + "Received response for google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.ListOperations", + extra={ + "serviceName": "google.cloud.dialogflow.v2.CompanionAgents", + "rpcName": "ListOperations", + "httpResponse": http_response, + "metadata": http_response["headers"], + }, + ) + return resp + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("CompanionAgentsRestTransport",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest_base.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest_base.py new file mode 100644 index 000000000000..a5ef769e9af9 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/companion_agents/transports/rest_base.py @@ -0,0 +1,259 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + +import google.protobuf.empty_pb2 as empty_pb2 # type: ignore +from google.api_core import gapic_v1, path_template +from google.cloud.location import locations_pb2 # type: ignore +from google.longrunning import operations_pb2 # type: ignore +from google.protobuf import json_format + +from google.cloud.dialogflow_v2.types import companion_agent +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +from .base import DEFAULT_CLIENT_INFO, CompanionAgentsTransport + + +class _BaseCompanionAgentsRestTransport(CompanionAgentsTransport): + """Base REST backend transport for CompanionAgents. + + 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 = "dialogflow.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: 'dialogflow.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 _BaseCreateCompanionAgent: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v2/{parent=projects/*/locations/*}/companionAgents", + "body": "companion_agent", + }, + ] + return http_options + + class _BaseDeleteCompanionAgent: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "delete", + "uri": "/v2/{name=projects/*/locations/*/companionAgents/*}", + }, + ] + return http_options + + class _BaseGetCompanionAgent: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v2/{name=projects/*/locations/*/companionAgents/*}", + }, + ] + return http_options + + class _BaseListCompanionAgents: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v2/{parent=projects/*/locations/*}/companionAgents", + }, + ] + return http_options + + class _BaseUpdateCompanionAgent: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "patch", + "uri": "/v2/{companion_agent.name=projects/*/locations/*/companionAgents/*}", + "body": "companion_agent", + }, + ] + return http_options + + class _BaseGetLocation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v2/{name=projects/*/locations/*}", + }, + ] + return http_options + + class _BaseListLocations: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v2/{name=projects/*}/locations", + }, + ] + return http_options + + class _BaseCancelOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/v2/{name=projects/*/operations/*}:cancel", + }, + { + "method": "post", + "uri": "/v2/{name=projects/*/locations/*/operations/*}:cancel", + }, + ] + return http_options + + class _BaseGetOperation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v2/{name=projects/*/operations/*}", + }, + { + "method": "get", + "uri": "/v2/{name=projects/*/locations/*/operations/*}", + }, + ] + return http_options + + class _BaseListOperations: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/v2/{name=projects/*}/operations", + }, + { + "method": "get", + "uri": "/v2/{name=projects/*/locations/*}/operations", + }, + ] + return http_options + + +__all__ = ("_BaseCompanionAgentsRestTransport",) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py index 30de6e2f770a..9ed7d02e896e 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/async_client.py @@ -91,6 +91,10 @@ class ConversationProfilesAsyncClient: agent_path = staticmethod(ConversationProfilesClient.agent_path) parse_agent_path = staticmethod(ConversationProfilesClient.parse_agent_path) + companion_agent_path = staticmethod(ConversationProfilesClient.companion_agent_path) + parse_companion_agent_path = staticmethod( + ConversationProfilesClient.parse_companion_agent_path + ) conversation_model_path = staticmethod( ConversationProfilesClient.conversation_model_path ) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/client.py index 71ec942a2fae..2bbe5172f0fd 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/client.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversation_profiles/client.py @@ -200,6 +200,28 @@ def parse_agent_path(path: str) -> Dict[str, str]: m = re.match(r"^projects/(?P.+?)/agent$", path) return m.groupdict() if m else {} + @staticmethod + def companion_agent_path( + project: str, + location: str, + companion_agent: str, + ) -> str: + """Returns a fully-qualified companion_agent string.""" + return "projects/{project}/locations/{location}/companionAgents/{companion_agent}".format( + project=project, + location=location, + companion_agent=companion_agent, + ) + + @staticmethod + def parse_companion_agent_path(path: str) -> Dict[str, str]: + """Parses a companion_agent path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/companionAgents/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + @staticmethod def conversation_model_path( project: str, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/async_client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/async_client.py index 2beff53da8d3..4f214193ecc2 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/async_client.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/async_client.py @@ -95,6 +95,10 @@ class ConversationsAsyncClient: parse_app_path = staticmethod(ConversationsClient.parse_app_path) ces_tool_path = staticmethod(ConversationsClient.ces_tool_path) parse_ces_tool_path = staticmethod(ConversationsClient.parse_ces_tool_path) + companion_agent_path = staticmethod(ConversationsClient.companion_agent_path) + parse_companion_agent_path = staticmethod( + ConversationsClient.parse_companion_agent_path + ) conversation_path = staticmethod(ConversationsClient.conversation_path) parse_conversation_path = staticmethod(ConversationsClient.parse_conversation_path) conversation_model_path = staticmethod(ConversationsClient.conversation_model_path) @@ -1277,7 +1281,6 @@ async def sample_generate_stateless_summary(): # Initialize request argument(s) stateless_conversation = dialogflow_v2.MinimalConversation() - stateless_conversation.messages.content = "content_value" stateless_conversation.parent = "parent_value" conversation_profile = dialogflow_v2.ConversationProfile() @@ -1472,7 +1475,6 @@ async def sample_search_knowledge(): # Initialize request argument(s) query = dialogflow_v2.TextInput() - query.text = "text_value" query.language_code = "language_code_value" request = dialogflow_v2.SearchKnowledgeRequest( diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/client.py index 7ac04972669f..e7b26d30304b 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/client.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/conversations/client.py @@ -261,6 +261,28 @@ def parse_ces_tool_path(path: str) -> Dict[str, str]: ) return m.groupdict() if m else {} + @staticmethod + def companion_agent_path( + project: str, + location: str, + companion_agent: str, + ) -> str: + """Returns a fully-qualified companion_agent string.""" + return "projects/{project}/locations/{location}/companionAgents/{companion_agent}".format( + project=project, + location=location, + companion_agent=companion_agent, + ) + + @staticmethod + def parse_companion_agent_path(path: str) -> Dict[str, str]: + """Parses a companion_agent path into its component segments.""" + m = re.match( + r"^projects/(?P.+?)/locations/(?P.+?)/companionAgents/(?P.+?)$", + path, + ) + return m.groupdict() if m else {} + @staticmethod def conversation_path( project: str, @@ -1832,7 +1854,6 @@ def sample_generate_stateless_summary(): # Initialize request argument(s) stateless_conversation = dialogflow_v2.MinimalConversation() - stateless_conversation.messages.content = "content_value" stateless_conversation.parent = "parent_value" conversation_profile = dialogflow_v2.ConversationProfile() @@ -2027,7 +2048,6 @@ def sample_search_knowledge(): # Initialize request argument(s) query = dialogflow_v2.TextInput() - query.text = "text_value" query.language_code = "language_code_value" request = dialogflow_v2.SearchKnowledgeRequest( diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/async_client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/async_client.py index b53bb50eb3ac..3d2fe7b76667 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/async_client.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/async_client.py @@ -48,6 +48,8 @@ OptionalRetry = Union[retries.AsyncRetry, object, None] # type: ignore import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +import google.rpc.status_pb2 as status_pb2 # type: ignore from google.cloud.location import locations_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore @@ -836,7 +838,6 @@ async def sample_analyze_content(): # Initialize request argument(s) text_input = dialogflow_v2.TextInput() - text_input.text = "text_value" text_input.language_code = "language_code_value" request = dialogflow_v2.AnalyzeContentRequest( @@ -1131,6 +1132,194 @@ def request_generator(): # Done; return the response. return response + def bidi_streaming_analyze_content( + self, + requests: Optional[ + AsyncIterator[participant.BidiStreamingAnalyzeContentRequest] + ] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> Awaitable[AsyncIterable[participant.BidiStreamingAnalyzeContentResponse]]: + r"""Bidirectional endless streaming version of + [StreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent]. + + .. 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 dialogflow_v2 + + async def sample_bidi_streaming_analyze_content(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + config = dialogflow_v2.Config() + config.voice_session_config.input_audio_encoding = "AUDIO_ENCODING_ALAW" + config.voice_session_config.input_audio_sample_rate_hertz = 3097 + config.voice_session_config.output_audio_encoding = "OUTPUT_AUDIO_ENCODING_ALAW" + config.voice_session_config.output_audio_sample_rate_hertz = 3226 + config.participant = "participant_value" + + request = dialogflow_v2.BidiStreamingAnalyzeContentRequest( + config=config, + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.BidiStreamingAnalyzeContentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = await client.bidi_streaming_analyze_content(requests=request_generator()) + + # Handle the response + async for response in stream: + print(response) + + Args: + requests (AsyncIterator[`google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest`]): + The request object AsyncIterator. The request message for + [Participants.BidiStreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent]. + retry (google.api_core.retry_async.AsyncRetry): 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: + AsyncIterable[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentResponse]: + The response message for + [Participants.BidiStreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent]. + + """ + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.bidi_streaming_analyze_content + ] + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = rpc( + requests, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def streaming_reactive_companion_suggestions( + self, + requests: Optional[ + AsyncIterator[participant.StreamingReactiveCompanionSuggestionsRequest] + ] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> Awaitable[ + AsyncIterable[participant.StreamingReactiveCompanionSuggestionsResponse] + ]: + r"""External streaming API for direct human-agent-to-bot + chats. + + .. 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 dialogflow_v2 + + async def sample_streaming_reactive_companion_suggestions(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest( + text_input="text_input_value", + participant="participant_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = await client.streaming_reactive_companion_suggestions(requests=request_generator()) + + # Handle the response + async for response in stream: + print(response) + + Args: + requests (AsyncIterator[`google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsRequest`]): + The request object AsyncIterator. The request message for + [Participants.StreamingReactiveCompanionSuggestions][google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions]. + retry (google.api_core.retry_async.AsyncRetry): 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: + AsyncIterable[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsResponse]: + The response message for + [Participants.StreamingReactiveCompanionSuggestions][google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions]. + + """ + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._client._transport._wrapped_methods[ + self._client._transport.streaming_reactive_companion_suggestions + ] + + # Validate the universe domain. + self._client._validate_universe_domain() + + # Send the request. + response = rpc( + requests, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + async def suggest_articles( self, request: Optional[Union[participant.SuggestArticlesRequest, dict]] = None, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/client.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/client.py index e660b4a01eb2..11f4e9e0476d 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/client.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/client.py @@ -71,6 +71,8 @@ _LOGGER = std_logging.getLogger(__name__) import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +import google.rpc.status_pb2 as status_pb2 # type: ignore from google.cloud.location import locations_pb2 # type: ignore from google.longrunning import operations_pb2 # type: ignore @@ -1320,7 +1322,6 @@ def sample_analyze_content(): # Initialize request argument(s) text_input = dialogflow_v2.TextInput() - text_input.text = "text_value" text_input.language_code = "language_code_value" request = dialogflow_v2.AnalyzeContentRequest( @@ -1610,6 +1611,192 @@ def request_generator(): # Done; return the response. return response + def bidi_streaming_analyze_content( + self, + requests: Optional[ + Iterator[participant.BidiStreamingAnalyzeContentRequest] + ] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> Iterable[participant.BidiStreamingAnalyzeContentResponse]: + r"""Bidirectional endless streaming version of + [StreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent]. + + .. 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 dialogflow_v2 + + def sample_bidi_streaming_analyze_content(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + config = dialogflow_v2.Config() + config.voice_session_config.input_audio_encoding = "AUDIO_ENCODING_ALAW" + config.voice_session_config.input_audio_sample_rate_hertz = 3097 + config.voice_session_config.output_audio_encoding = "OUTPUT_AUDIO_ENCODING_ALAW" + config.voice_session_config.output_audio_sample_rate_hertz = 3226 + config.participant = "participant_value" + + request = dialogflow_v2.BidiStreamingAnalyzeContentRequest( + config=config, + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.BidiStreamingAnalyzeContentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = client.bidi_streaming_analyze_content(requests=request_generator()) + + # Handle the response + for response in stream: + print(response) + + Args: + requests (Iterator[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest]): + The request object iterator. The request message for + [Participants.BidiStreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent]. + 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: + Iterable[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentResponse]: + The response message for + [Participants.BidiStreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent]. + + """ + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.bidi_streaming_analyze_content + ] + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + requests, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def streaming_reactive_companion_suggestions( + self, + requests: Optional[ + Iterator[participant.StreamingReactiveCompanionSuggestionsRequest] + ] = None, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> Iterable[participant.StreamingReactiveCompanionSuggestionsResponse]: + r"""External streaming API for direct human-agent-to-bot + chats. + + .. 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 dialogflow_v2 + + def sample_streaming_reactive_companion_suggestions(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest( + text_input="text_input_value", + participant="participant_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = client.streaming_reactive_companion_suggestions(requests=request_generator()) + + # Handle the response + for response in stream: + print(response) + + Args: + requests (Iterator[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsRequest]): + The request object iterator. The request message for + [Participants.StreamingReactiveCompanionSuggestions][google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions]. + 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: + Iterable[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsResponse]: + The response message for + [Participants.StreamingReactiveCompanionSuggestions][google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions]. + + """ + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[ + self._transport.streaming_reactive_companion_suggestions + ] + + # Validate the universe domain. + self._validate_universe_domain() + + # Send the request. + response = rpc( + requests, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + def suggest_articles( self, request: Optional[Union[participant.SuggestArticlesRequest, dict]] = None, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/base.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/base.py index 0fbd424e7dff..b00d8fe6a6e8 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/base.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/base.py @@ -185,6 +185,16 @@ def _prep_wrapped_messages(self, client_info): default_timeout=220.0, client_info=client_info, ), + self.bidi_streaming_analyze_content: gapic_v1.method.wrap_method( + self.bidi_streaming_analyze_content, + default_timeout=1800.0, + client_info=client_info, + ), + self.streaming_reactive_companion_suggestions: gapic_v1.method.wrap_method( + self.streaming_reactive_companion_suggestions, + default_timeout=5400.0, + client_info=client_info, + ), self.suggest_articles: gapic_v1.method.wrap_method( self.suggest_articles, default_timeout=None, @@ -304,6 +314,30 @@ def streaming_analyze_content( ]: raise NotImplementedError() + @property + def bidi_streaming_analyze_content( + self, + ) -> Callable[ + [participant.BidiStreamingAnalyzeContentRequest], + Union[ + participant.BidiStreamingAnalyzeContentResponse, + Awaitable[participant.BidiStreamingAnalyzeContentResponse], + ], + ]: + raise NotImplementedError() + + @property + def streaming_reactive_companion_suggestions( + self, + ) -> Callable[ + [participant.StreamingReactiveCompanionSuggestionsRequest], + Union[ + participant.StreamingReactiveCompanionSuggestionsResponse, + Awaitable[participant.StreamingReactiveCompanionSuggestionsResponse], + ], + ]: + raise NotImplementedError() + @property def suggest_articles( self, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc.py index cafc350ae398..cd0151a9ffe2 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc.py @@ -519,6 +519,71 @@ def streaming_analyze_content( ) return self._stubs["streaming_analyze_content"] + @property + def bidi_streaming_analyze_content( + self, + ) -> Callable[ + [participant.BidiStreamingAnalyzeContentRequest], + participant.BidiStreamingAnalyzeContentResponse, + ]: + r"""Return a callable for the bidi streaming analyze content method over gRPC. + + Bidirectional endless streaming version of + [StreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent]. + + Returns: + Callable[[~.BidiStreamingAnalyzeContentRequest], + ~.BidiStreamingAnalyzeContentResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "bidi_streaming_analyze_content" not in self._stubs: + self._stubs["bidi_streaming_analyze_content"] = ( + self._logged_channel.stream_stream( + "/google.cloud.dialogflow.v2.Participants/BidiStreamingAnalyzeContent", + request_serializer=participant.BidiStreamingAnalyzeContentRequest.serialize, + response_deserializer=participant.BidiStreamingAnalyzeContentResponse.deserialize, + ) + ) + return self._stubs["bidi_streaming_analyze_content"] + + @property + def streaming_reactive_companion_suggestions( + self, + ) -> Callable[ + [participant.StreamingReactiveCompanionSuggestionsRequest], + participant.StreamingReactiveCompanionSuggestionsResponse, + ]: + r"""Return a callable for the streaming reactive companion + suggestions method over gRPC. + + External streaming API for direct human-agent-to-bot + chats. + + Returns: + Callable[[~.StreamingReactiveCompanionSuggestionsRequest], + ~.StreamingReactiveCompanionSuggestionsResponse]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "streaming_reactive_companion_suggestions" not in self._stubs: + self._stubs["streaming_reactive_companion_suggestions"] = ( + self._logged_channel.stream_stream( + "/google.cloud.dialogflow.v2.Participants/StreamingReactiveCompanionSuggestions", + request_serializer=participant.StreamingReactiveCompanionSuggestionsRequest.serialize, + response_deserializer=participant.StreamingReactiveCompanionSuggestionsResponse.deserialize, + ) + ) + return self._stubs["streaming_reactive_companion_suggestions"] + @property def suggest_articles( self, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py index 49ba55df33a6..2f5e4e423103 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/grpc_asyncio.py @@ -533,6 +533,71 @@ def streaming_analyze_content( ) return self._stubs["streaming_analyze_content"] + @property + def bidi_streaming_analyze_content( + self, + ) -> Callable[ + [participant.BidiStreamingAnalyzeContentRequest], + Awaitable[participant.BidiStreamingAnalyzeContentResponse], + ]: + r"""Return a callable for the bidi streaming analyze content method over gRPC. + + Bidirectional endless streaming version of + [StreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.StreamingAnalyzeContent]. + + Returns: + Callable[[~.BidiStreamingAnalyzeContentRequest], + Awaitable[~.BidiStreamingAnalyzeContentResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "bidi_streaming_analyze_content" not in self._stubs: + self._stubs["bidi_streaming_analyze_content"] = ( + self._logged_channel.stream_stream( + "/google.cloud.dialogflow.v2.Participants/BidiStreamingAnalyzeContent", + request_serializer=participant.BidiStreamingAnalyzeContentRequest.serialize, + response_deserializer=participant.BidiStreamingAnalyzeContentResponse.deserialize, + ) + ) + return self._stubs["bidi_streaming_analyze_content"] + + @property + def streaming_reactive_companion_suggestions( + self, + ) -> Callable[ + [participant.StreamingReactiveCompanionSuggestionsRequest], + Awaitable[participant.StreamingReactiveCompanionSuggestionsResponse], + ]: + r"""Return a callable for the streaming reactive companion + suggestions method over gRPC. + + External streaming API for direct human-agent-to-bot + chats. + + Returns: + Callable[[~.StreamingReactiveCompanionSuggestionsRequest], + Awaitable[~.StreamingReactiveCompanionSuggestionsResponse]]: + A function that, when called, will call the underlying RPC + on the server. + """ + # Generate a "stub function" on-the-fly which will actually make + # the request. + # gRPC handles serialization and deserialization, so we just need + # to pass in the functions for each. + if "streaming_reactive_companion_suggestions" not in self._stubs: + self._stubs["streaming_reactive_companion_suggestions"] = ( + self._logged_channel.stream_stream( + "/google.cloud.dialogflow.v2.Participants/StreamingReactiveCompanionSuggestions", + request_serializer=participant.StreamingReactiveCompanionSuggestionsRequest.serialize, + response_deserializer=participant.StreamingReactiveCompanionSuggestionsResponse.deserialize, + ) + ) + return self._stubs["streaming_reactive_companion_suggestions"] + @property def suggest_articles( self, @@ -695,6 +760,16 @@ def _prep_wrapped_messages(self, client_info): default_timeout=220.0, client_info=client_info, ), + self.bidi_streaming_analyze_content: self._wrap_method( + self.bidi_streaming_analyze_content, + default_timeout=1800.0, + client_info=client_info, + ), + self.streaming_reactive_companion_suggestions: self._wrap_method( + self.streaming_reactive_companion_suggestions, + default_timeout=5400.0, + client_info=client_info, + ), self.suggest_articles: self._wrap_method( self.suggest_articles, default_timeout=None, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest.py index acc5f7af5887..cf009fe5d01e 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest.py @@ -971,6 +971,25 @@ def __call__( ) return resp + class _BidiStreamingAnalyzeContent( + _BaseParticipantsRestTransport._BaseBidiStreamingAnalyzeContent, + ParticipantsRestStub, + ): + def __hash__(self): + return hash("ParticipantsRestTransport.BidiStreamingAnalyzeContent") + + def __call__( + self, + request: participant.BidiStreamingAnalyzeContentRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> rest_streaming.ResponseIterator: + raise NotImplementedError( + "Method BidiStreamingAnalyzeContent is not available over REST transport" + ) + class _CreateParticipant( _BaseParticipantsRestTransport._BaseCreateParticipant, ParticipantsRestStub ): @@ -1440,6 +1459,27 @@ def __call__( "Method StreamingAnalyzeContent is not available over REST transport" ) + class _StreamingReactiveCompanionSuggestions( + _BaseParticipantsRestTransport._BaseStreamingReactiveCompanionSuggestions, + ParticipantsRestStub, + ): + def __hash__(self): + return hash( + "ParticipantsRestTransport.StreamingReactiveCompanionSuggestions" + ) + + def __call__( + self, + request: participant.StreamingReactiveCompanionSuggestionsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> rest_streaming.ResponseIterator: + raise NotImplementedError( + "Method StreamingReactiveCompanionSuggestions is not available over REST transport" + ) + class _SuggestArticles( _BaseParticipantsRestTransport._BaseSuggestArticles, ParticipantsRestStub ): @@ -2210,6 +2250,19 @@ def analyze_content( # In C++ this would require a dynamic_cast return self._AnalyzeContent(self._session, self._host, self._interceptor) # type: ignore + @property + def bidi_streaming_analyze_content( + self, + ) -> Callable[ + [participant.BidiStreamingAnalyzeContentRequest], + participant.BidiStreamingAnalyzeContentResponse, + ]: + # 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._BidiStreamingAnalyzeContent( + self._session, self._host, self._interceptor + ) # type: ignore + @property def create_participant( self, @@ -2251,6 +2304,19 @@ def streaming_analyze_content( self._session, self._host, self._interceptor ) # type: ignore + @property + def streaming_reactive_companion_suggestions( + self, + ) -> Callable[ + [participant.StreamingReactiveCompanionSuggestionsRequest], + participant.StreamingReactiveCompanionSuggestionsResponse, + ]: + # 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._StreamingReactiveCompanionSuggestions( + self._session, self._host, self._interceptor + ) # type: ignore + @property def suggest_articles( self, diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest_base.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest_base.py index 51abd0bc929e..4c4b3f70d6ec 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest_base.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/services/participants/transports/rest_base.py @@ -112,6 +112,10 @@ def _get_http_options(): ] return http_options + class _BaseBidiStreamingAnalyzeContent: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + class _BaseCreateParticipant: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") @@ -178,6 +182,10 @@ class _BaseStreamingAnalyzeContent: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") + class _BaseStreamingReactiveCompanionSuggestions: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + class _BaseSuggestArticles: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/__init__.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/__init__.py index d8afdacb24cb..cdd101199f31 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/__init__.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/__init__.py @@ -61,6 +61,16 @@ from .ces_tool import ( CesToolSpec, ) +from .companion_agent import ( + CompanionAgent, + CreateCompanionAgentRequest, + DeleteCompanionAgentRequest, + GetCompanionAgentRequest, + GuidanceInstruction, + ListCompanionAgentsRequest, + ListCompanionAgentsResponse, + UpdateCompanionAgentRequest, +) from .context import ( Context, CreateContextRequest, @@ -254,6 +264,13 @@ ListGeneratorEvaluationsResponse, SummarizationEvaluationMetrics, ) +from .grounding import ( + GroundingChunk, + GroundingMetadata, + GroundingSupport, + SearchEntryPoint, + Segment, +) from .human_agent_assistant_event import ( HumanAgentAssistantEvent, ) @@ -291,11 +308,16 @@ AssistQueryParameters, AudioInput, AutomatedAgentReply, + BidiStreamingAnalyzeContentRequest, + BidiStreamingAnalyzeContentResponse, + CancelQuery, + CompanionSuggestion, CreateParticipantRequest, DatastoreResponseReason, DialogflowAssistAnswer, DtmfParameters, FaqAnswer, + GenerateCompanionSuggestionsResponse, GenerateSuggestionsResponse, GetParticipantRequest, IngestedContextReferenceDebugInfo, @@ -313,6 +335,8 @@ SmartReplyAnswer, StreamingAnalyzeContentRequest, StreamingAnalyzeContentResponse, + StreamingReactiveCompanionSuggestionsRequest, + StreamingReactiveCompanionSuggestionsResponse, SuggestArticlesRequest, SuggestArticlesResponse, SuggestFaqAnswersRequest, @@ -323,6 +347,8 @@ SuggestKnowledgeAssistResponse, SuggestSmartRepliesRequest, SuggestSmartRepliesResponse, + ToolCallEvents, + ToolCallSuggestion, UpdateParticipantRequest, ) from .session import ( @@ -432,6 +458,14 @@ "TelephonyDtmf", "CesAppSpec", "CesToolSpec", + "CompanionAgent", + "CreateCompanionAgentRequest", + "DeleteCompanionAgentRequest", + "GetCompanionAgentRequest", + "GuidanceInstruction", + "ListCompanionAgentsRequest", + "ListCompanionAgentsResponse", + "UpdateCompanionAgentRequest", "Context", "CreateContextRequest", "DeleteAllContextsRequest", @@ -597,6 +631,11 @@ "ListGeneratorEvaluationsRequest", "ListGeneratorEvaluationsResponse", "SummarizationEvaluationMetrics", + "GroundingChunk", + "GroundingMetadata", + "GroundingSupport", + "SearchEntryPoint", + "Segment", "HumanAgentAssistantEvent", "BatchDeleteIntentsRequest", "BatchUpdateIntentsRequest", @@ -625,10 +664,15 @@ "AssistQueryParameters", "AudioInput", "AutomatedAgentReply", + "BidiStreamingAnalyzeContentRequest", + "BidiStreamingAnalyzeContentResponse", + "CancelQuery", + "CompanionSuggestion", "CreateParticipantRequest", "DialogflowAssistAnswer", "DtmfParameters", "FaqAnswer", + "GenerateCompanionSuggestionsResponse", "GenerateSuggestionsResponse", "GetParticipantRequest", "IngestedContextReferenceDebugInfo", @@ -646,6 +690,8 @@ "SmartReplyAnswer", "StreamingAnalyzeContentRequest", "StreamingAnalyzeContentResponse", + "StreamingReactiveCompanionSuggestionsRequest", + "StreamingReactiveCompanionSuggestionsResponse", "SuggestArticlesRequest", "SuggestArticlesResponse", "SuggestFaqAnswersRequest", @@ -656,6 +702,8 @@ "SuggestKnowledgeAssistResponse", "SuggestSmartRepliesRequest", "SuggestSmartRepliesResponse", + "ToolCallEvents", + "ToolCallSuggestion", "UpdateParticipantRequest", "DatastoreResponseReason", "CloudConversationDebuggingInfo", diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/answer_record.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/answer_record.py index 42b86c392c54..2067ab12a5e2 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/answer_record.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/answer_record.py @@ -340,6 +340,8 @@ class AgentAssistantFeedback(proto.Message): Optional. Feedback for knowledge search. knowledge_assist_feedback (google.cloud.dialogflow_v2.types.AgentAssistantFeedback.KnowledgeAssistFeedback): Optional. Feedback for knowledge assist. + companion_feedback (google.cloud.dialogflow_v2.types.AgentAssistantFeedback.CompanionFeedback): + Optional. Feedback for companion agent. """ class AnswerRelevance(proto.Enum): @@ -479,6 +481,9 @@ class KnowledgeAssistFeedback(proto.Message): number=2, ) + class CompanionFeedback(proto.Message): + r"""Feedback for companion agent.""" + answer_relevance: AnswerRelevance = proto.Field( proto.ENUM, number=1, @@ -509,6 +514,11 @@ class KnowledgeAssistFeedback(proto.Message): number=6, message=KnowledgeAssistFeedback, ) + companion_feedback: CompanionFeedback = proto.Field( + proto.MESSAGE, + number=8, + message=CompanionFeedback, + ) class AgentAssistantRecord(proto.Message): @@ -537,6 +547,15 @@ class AgentAssistantRecord(proto.Message): generator_suggestion (google.cloud.dialogflow_v2.types.GeneratorSuggestion): Output only. The generator suggestion. + This field is a member of `oneof`_ ``answer``. + companion_suggestion (google.cloud.dialogflow_v2.types.CompanionSuggestion): + Output only. The companion suggestion. + + This field is a member of `oneof`_ ``answer``. + reactive_companion_suggestion (google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsResponse.ReactiveModeResponse): + Output only. The reactive companion + suggestion. + This field is a member of `oneof`_ ``answer``. """ @@ -564,6 +583,18 @@ class AgentAssistantRecord(proto.Message): oneof="answer", message=generator.GeneratorSuggestion, ) + companion_suggestion: participant.CompanionSuggestion = proto.Field( + proto.MESSAGE, + number=9, + oneof="answer", + message=participant.CompanionSuggestion, + ) + reactive_companion_suggestion: participant.StreamingReactiveCompanionSuggestionsResponse.ReactiveModeResponse = proto.Field( + proto.MESSAGE, + number=10, + oneof="answer", + message=participant.StreamingReactiveCompanionSuggestionsResponse.ReactiveModeResponse, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/audio_config.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/audio_config.py index 5b95bad6b4b1..4049baa3a033 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/audio_config.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/audio_config.py @@ -377,6 +377,9 @@ class InputAudioConfig(proto.Message): r"""Instructs the speech recognizer how to process the audio content. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: audio_encoding (google.cloud.dialogflow_v2.types.AudioEncoding): Required. Audio encoding of the audio content @@ -464,6 +467,18 @@ class InputAudioConfig(proto.Message): migration takes place in June 2024. Please refer to `Dialogflow ES Speech model migration `__. + gemini_asr_config (google.cloud.dialogflow_v2.types.SpeechToTextConfig.GeminiAsrConfig): + Optional. Configuration for using Gemini ASR models served + via Vertex AI. This field is only used when + ``use_gemini_asr`` is true. + use_gemini_asr (bool): + Optional. If true, Gemini ASR will be used + for transcription instead of Cloud + Speech-to-Text. If false, Cloud Speech-to-Text + will be used. If unset, this setting is + inherited from the ConversationProfile. + + This field is a member of `oneof`_ ``_use_gemini_asr``. """ audio_encoding: "AudioEncoding" = proto.Field( @@ -525,6 +540,16 @@ class InputAudioConfig(proto.Message): proto.BOOL, number=26, ) + gemini_asr_config: "SpeechToTextConfig.GeminiAsrConfig" = proto.Field( + proto.MESSAGE, + number=30, + message="SpeechToTextConfig.GeminiAsrConfig", + ) + use_gemini_asr: bool = proto.Field( + proto.BOOL, + number=31, + optional=True, + ) class VoiceSelectionParams(proto.Message): @@ -800,8 +825,98 @@ class SpeechToTextConfig(proto.Message): Use timeout based endpointing, interpreting endpointer sensitivity as seconds of timeout value. + gemini_asr_config (google.cloud.dialogflow_v2.types.SpeechToTextConfig.GeminiAsrConfig): + Optional. Configuration for using Gemini ASR models served + via Vertex AI, overriding the default Gemini ASR model or + providing additional advanced parameters. This field is only + used when ``use_gemini_asr`` is true. + use_gemini_asr (bool): + Optional. If true, Gemini ASR will be used + for transcription instead of Cloud + Speech-to-Text. """ + class GeminiAsrConfig(proto.Message): + r"""Configuration for using Gemini ASR models served via Vertex + AI. This message is used to override the default Gemini ASR + model or provide additional advanced parameters. + + Attributes: + model_id (str): + Optional. The Gemini ASR model ID used for + transcription. This value overrides the default + model ID configured on the server. Example: + "gemini-3-flash-lite-asr-preview". + silence_duration_ms (int): + Optional. The required duration of detected + silence (or non-speech) before end-of-speech is + committed. + prefix_padding_ms (int): + Optional. The required duration of detected + speech before start-of-speech is committed. + start_of_speech_sensitivity (google.cloud.dialogflow_v2.types.SpeechToTextConfig.GeminiAsrConfig.StartSensitivity): + Optional. Start of speech sensitivity. + end_of_speech_sensitivity (google.cloud.dialogflow_v2.types.SpeechToTextConfig.GeminiAsrConfig.EndSensitivity): + Optional. End of speech sensitivity. + """ + + class StartSensitivity(proto.Enum): + r"""Start of speech sensitivity. + + Values: + START_SENSITIVITY_UNSPECIFIED (0): + The default is START_SENSITIVITY_LOW. + START_SENSITIVITY_HIGH (1): + Automatic detection will detect the start of + speech more often. + START_SENSITIVITY_LOW (2): + Automatic detection will detect the start of + speech less often. + """ + + START_SENSITIVITY_UNSPECIFIED = 0 + START_SENSITIVITY_HIGH = 1 + START_SENSITIVITY_LOW = 2 + + class EndSensitivity(proto.Enum): + r"""End of speech sensitivity. + + Values: + END_SENSITIVITY_UNSPECIFIED (0): + The default is END_SENSITIVITY_LOW. + END_SENSITIVITY_HIGH (1): + Automatic detection ends speech more often. + END_SENSITIVITY_LOW (2): + Automatic detection ends speech less often. + """ + + END_SENSITIVITY_UNSPECIFIED = 0 + END_SENSITIVITY_HIGH = 1 + END_SENSITIVITY_LOW = 2 + + model_id: str = proto.Field( + proto.STRING, + number=1, + ) + silence_duration_ms: int = proto.Field( + proto.INT32, + number=2, + ) + prefix_padding_ms: int = proto.Field( + proto.INT32, + number=3, + ) + start_of_speech_sensitivity: "SpeechToTextConfig.GeminiAsrConfig.StartSensitivity" = proto.Field( + proto.ENUM, + number=4, + enum="SpeechToTextConfig.GeminiAsrConfig.StartSensitivity", + ) + end_of_speech_sensitivity: "SpeechToTextConfig.GeminiAsrConfig.EndSensitivity" = proto.Field( + proto.ENUM, + number=5, + enum="SpeechToTextConfig.GeminiAsrConfig.EndSensitivity", + ) + speech_model_variant: "SpeechModelVariant" = proto.Field( proto.ENUM, number=1, @@ -836,6 +951,15 @@ class SpeechToTextConfig(proto.Message): proto.BOOL, number=11, ) + gemini_asr_config: GeminiAsrConfig = proto.Field( + proto.MESSAGE, + number=15, + message=GeminiAsrConfig, + ) + use_gemini_asr: bool = proto.Field( + proto.BOOL, + number=16, + ) __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/ces_app.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/ces_app.py index 7d49510c941b..ee5371b2cb19 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/ces_app.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/ces_app.py @@ -30,7 +30,9 @@ class CesAppSpec(proto.Message): - r"""Spec of CES app that the generator can choose from. + r"""Deprecated: Use ``CesToolSpec`` instead. Spec of CES app that the + generator can choose from. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/companion_agent.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/companion_agent.py new file mode 100644 index 000000000000..e9d54aa8e79b --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/companion_agent.py @@ -0,0 +1,479 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from __future__ import annotations + +from typing import MutableMapping, MutableSequence + +import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +import proto # type: ignore + +from google.cloud.dialogflow_v2.types import ces_tool, toolset + +__protobuf__ = proto.module( + package="google.cloud.dialogflow.v2", + manifest={ + "CreateCompanionAgentRequest", + "GetCompanionAgentRequest", + "ListCompanionAgentsRequest", + "ListCompanionAgentsResponse", + "UpdateCompanionAgentRequest", + "DeleteCompanionAgentRequest", + "GuidanceInstruction", + "CompanionAgent", + }, +) + + +class CreateCompanionAgentRequest(proto.Message): + r"""Request of CreateCompanionAgent. + + Attributes: + parent (str): + Required. Resource identifier of the project creating the + companion agent. Format: + ``projects/{project}/locations/{location}`` + companion_agent (google.cloud.dialogflow_v2.types.CompanionAgent): + Required. The companion agent to create. + companion_agent_id (str): + Optional. The resource ID of the companion + agent to create. If not provided, the server + will auto-generate a resource ID. + """ + + parent: str = proto.Field( + proto.STRING, + number=1, + ) + companion_agent: "CompanionAgent" = proto.Field( + proto.MESSAGE, + number=2, + message="CompanionAgent", + ) + companion_agent_id: str = proto.Field( + proto.STRING, + number=3, + ) + + +class GetCompanionAgentRequest(proto.Message): + r"""Request message for GetCompanionAgent. + + Attributes: + name (str): + Required. The unique resource identifier of the + CompanionAgent to get all information for. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}``. + Contains the information about the {project}, {location}, + and {companion_agent}. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + + +class ListCompanionAgentsRequest(proto.Message): + r"""Request message for ListCompanionAgents. + + Attributes: + parent (str): + Required. The parent resource name to list the companion + agents for. Format: + ``projects/{project}/locations/{location}`` + page_size (int): + Optional. Maximum number of companion agents + to return in a single page. By default 100 and + at most 1000. + page_token (str): + Optional. The page token, received from a + previous call. + """ + + parent: str = proto.Field( + proto.STRING, + number=1, + ) + page_size: int = proto.Field( + proto.INT32, + number=2, + ) + page_token: str = proto.Field( + proto.STRING, + number=3, + ) + + +class ListCompanionAgentsResponse(proto.Message): + r"""Response message for ListCompanionAgents. + + Attributes: + companion_agents (MutableSequence[google.cloud.dialogflow_v2.types.CompanionAgent]): + The list of companion agents. + next_page_token (str): + Token to retrieve the next page of results, + or empty if there are no more results in the + list. + """ + + @property + def raw_page(self): + return self + + companion_agents: MutableSequence["CompanionAgent"] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message="CompanionAgent", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=2, + ) + + +class UpdateCompanionAgentRequest(proto.Message): + r"""Request message for UpdateCompanionAgent. + + Attributes: + companion_agent (google.cloud.dialogflow_v2.types.CompanionAgent): + Required. The Companion Agent to update. + update_mask (google.protobuf.field_mask_pb2.FieldMask): + Optional. Update mask for Companion Agent. + """ + + companion_agent: "CompanionAgent" = proto.Field( + proto.MESSAGE, + number=1, + message="CompanionAgent", + ) + update_mask: field_mask_pb2.FieldMask = proto.Field( + proto.MESSAGE, + number=2, + message=field_mask_pb2.FieldMask, + ) + + +class DeleteCompanionAgentRequest(proto.Message): + r"""Request message for DeleteCompanionAgent. + + Attributes: + name (str): + Required. The unique resource identifier of the + CompanionAgent to delete. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}``. + """ + + name: str = proto.Field( + proto.STRING, + number=1, + ) + + +class GuidanceInstruction(proto.Message): + r"""Guidance instruction for the companion agent. + + Attributes: + display_name (str): + Optional. Display name for the instruction. + This name should be unique within the companion + agent. + display_details (str): + Optional. The detailed description of this + instruction. + condition (str): + Optional. The condition of the instruction. + For example, "the customer wants to cancel an + order". If the users want the instruction to be + triggered unconditionally, the condition can be + empty. + actions (MutableSequence[google.cloud.dialogflow_v2.types.GuidanceInstruction.Action]): + Optional. The action items that can be + processed. + trigger_event (google.cloud.dialogflow_v2.types.CompanionAgent.TriggerEvent): + Optional. Event that triggers the guidance instruction. If + UNSPECIFIED, the instruction triggering will be the same as + the skill's skill_triggering_event. + disable_suggested_reply (bool): + Optional. Whether to disable suggested reply generation for + this instruction. When set to ``true``, guidance generated + from this instruction will not include a suggested reply. + Default is ``false`` (suggested reply enabled). + """ + + class Action(proto.Message): + r"""Actions to take, including agent action and system action + (automation). + + Attributes: + description (str): + Required. Description of action item. It can + be a agent action (e.g. "Send a message to the + customer", "greet the customer") or system + action (e.g. "Update the ticket", "Create a + task", "cancel the order"). + """ + + description: str = proto.Field( + proto.STRING, + number=1, + ) + + display_name: str = proto.Field( + proto.STRING, + number=1, + ) + display_details: str = proto.Field( + proto.STRING, + number=2, + ) + condition: str = proto.Field( + proto.STRING, + number=3, + ) + actions: MutableSequence[Action] = proto.RepeatedField( + proto.MESSAGE, + number=4, + message=Action, + ) + trigger_event: "CompanionAgent.TriggerEvent" = proto.Field( + proto.ENUM, + number=6, + enum="CompanionAgent.TriggerEvent", + ) + disable_suggested_reply: bool = proto.Field( + proto.BOOL, + number=7, + ) + + +class CompanionAgent(proto.Message): + r"""Companion agent. + + Attributes: + name (str): + Identifier. The unique identifier of the companion agent. + Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}`` + create_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. Creation time of this companion + agent. + update_time (google.protobuf.timestamp_pb2.Timestamp): + Output only. Update time of this companion + agent. + toolset_tools (MutableSequence[google.cloud.dialogflow_v2.types.ToolsetTool]): + Optional. List of CES toolset specs that the + companion agent can choose from. + ces_tool_specs (MutableSequence[google.cloud.dialogflow_v2.types.CesToolSpec]): + Optional. List of CES tool specs that the + companion agent can choose from. + display_name (str): + Optional. Display name for the companion + agent. Character limit is 63. + description (str): + Optional. Description for the companion + agent. + skill_configs (MutableSequence[google.cloud.dialogflow_v2.types.CompanionAgent.SkillConfig]): + Optional. List of skill configs for the companion agent. + Allows at most one instance of each + [SkillConfig][google.cloud.dialogflow.v2.CompanionAgent.SkillConfig] + type. + """ + + class TriggerEvent(proto.Enum): + r"""Event that triggers companion agent skills and guidance + instructions. + + Values: + TRIGGER_EVENT_UNSPECIFIED (0): + Default value for TriggerEvent. For skill_triggering_event, + UNSPECIFIED defaults to CUSTOMER_MESSAGE. For instruction + trigger_event, UNSPECIFIED defaults to the skill's + skill_triggering_event. + END_OF_UTTERANCE (1): + Triggers when each chat message or voice + utterance ends. + CUSTOMER_MESSAGE (2): + Triggers after each customer message. + AGENT_MESSAGE (3): + Triggers after each agent message. + """ + + TRIGGER_EVENT_UNSPECIFIED = 0 + END_OF_UTTERANCE = 1 + CUSTOMER_MESSAGE = 2 + AGENT_MESSAGE = 3 + + class SkillConfig(proto.Message): + r"""Skill configuration for the companion agent. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + guidance_skill_config (google.cloud.dialogflow_v2.types.CompanionAgent.GuidanceSkillConfig): + Optional. Guidance skill configuration. + + This field is a member of `oneof`_ ``config``. + translation_skill_config (google.cloud.dialogflow_v2.types.CompanionAgent.TranslationSkillConfig): + Optional. Translation skill configuration. + + This field is a member of `oneof`_ ``config``. + skill_triggering_event (google.cloud.dialogflow_v2.types.CompanionAgent.SkillConfig.SkillTriggerEvent): + Optional. The event that should trigger the + skill. + """ + + class SkillTriggerEvent(proto.Enum): + r"""The event that should trigger the skill. + + Values: + SKILL_TRIGGER_EVENT_UNSPECIFIED (0): + Default value for SkillTriggerEvent. + END_OF_UTTERANCE (1): + Triggers when each chat message or voice + utterance ends. + CUSTOMER_MESSAGE (2): + Triggers after each customer message. + AGENT_MESSAGE (3): + Triggers after each agent message. + """ + + SKILL_TRIGGER_EVENT_UNSPECIFIED = 0 + END_OF_UTTERANCE = 1 + CUSTOMER_MESSAGE = 2 + AGENT_MESSAGE = 3 + + guidance_skill_config: "CompanionAgent.GuidanceSkillConfig" = proto.Field( + proto.MESSAGE, + number=2, + oneof="config", + message="CompanionAgent.GuidanceSkillConfig", + ) + translation_skill_config: "CompanionAgent.TranslationSkillConfig" = proto.Field( + proto.MESSAGE, + number=3, + oneof="config", + message="CompanionAgent.TranslationSkillConfig", + ) + skill_triggering_event: "CompanionAgent.SkillConfig.SkillTriggerEvent" = ( + proto.Field( + proto.ENUM, + number=1, + enum="CompanionAgent.SkillConfig.SkillTriggerEvent", + ) + ) + + class GuidanceSkillConfig(proto.Message): + r"""Guidance skill configuration. + + Attributes: + guidance_instructions (MutableSequence[google.cloud.dialogflow_v2.types.GuidanceInstruction]): + Optional. Customized instructions for + guidance. + overarching_guidance (str): + Optional. This is specific additional + guidance that can configured by the user. + knowledge_source (google.cloud.dialogflow_v2.types.CompanionAgent.KnowledgeSource): + Optional. Knowledge source configuration for + guidance. + """ + + guidance_instructions: MutableSequence["GuidanceInstruction"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=2, + message="GuidanceInstruction", + ) + ) + overarching_guidance: str = proto.Field( + proto.STRING, + number=3, + ) + knowledge_source: "CompanionAgent.KnowledgeSource" = proto.Field( + proto.MESSAGE, + number=5, + message="CompanionAgent.KnowledgeSource", + ) + + class KnowledgeSource(proto.Message): + r"""Knowledge source configuration for knowledge retrieval.""" + + class TranslationSkillConfig(proto.Message): + r"""Translation skill configuration for the companion agent. + + Attributes: + agent_language_code (str): + Optional. Target language code for the agent, + in IETF BCP-47 format (e.g., "en-US"). + customer_language_code (str): + Optional. Target language code for the + customer, in IETF BCP-47 format (e.g., "es"). + """ + + agent_language_code: str = proto.Field( + proto.STRING, + number=1, + ) + customer_language_code: str = proto.Field( + proto.STRING, + number=2, + ) + + name: str = proto.Field( + proto.STRING, + number=1, + ) + create_time: timestamp_pb2.Timestamp = proto.Field( + proto.MESSAGE, + number=2, + message=timestamp_pb2.Timestamp, + ) + update_time: timestamp_pb2.Timestamp = proto.Field( + proto.MESSAGE, + number=3, + message=timestamp_pb2.Timestamp, + ) + toolset_tools: MutableSequence[toolset.ToolsetTool] = proto.RepeatedField( + proto.MESSAGE, + number=4, + message=toolset.ToolsetTool, + ) + ces_tool_specs: MutableSequence[ces_tool.CesToolSpec] = proto.RepeatedField( + proto.MESSAGE, + number=5, + message=ces_tool.CesToolSpec, + ) + display_name: str = proto.Field( + proto.STRING, + number=8, + ) + description: str = proto.Field( + proto.STRING, + number=9, + ) + skill_configs: MutableSequence[SkillConfig] = proto.RepeatedField( + proto.MESSAGE, + number=7, + message=SkillConfig, + ) + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation.py index 24ca4bf16d12..d083e2f92dcf 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation.py @@ -291,8 +291,7 @@ class ContextContent(proto.Message): was incorporated into the relevant context reference. answer_record (str): - If the context content was generated from a tool call, - specify the answer record associated with the tool call. + Optional. The answer record of the tool execution result. Format: ``projects//locations//answerRecords/``. """ diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation_profile.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation_profile.py index 35cd96880a36..0290cc134960 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation_profile.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/conversation_profile.py @@ -617,8 +617,17 @@ class SuggestionConfig(proto.Message): features: AI_COACH) and use unredacted ingested context (Supported features: All Agent Assist features) enable_async_tool_call (bool): - Optional. If true, enable asynchronous - execution of tools. + Optional. Deprecated: This field is not consulted for tool + execution. Configure asynchronous execution per tool using + [CesToolSpec.async_execution][google.cloud.dialogflow.v2.CesToolSpec.async_execution] + or + [ToolsetTool.async_execution][google.cloud.dialogflow.v2.ToolsetTool.async_execution] + instead. + companion_agent (str): + Optional. The resource name of the companion agent to link. + This is only supported for + ``human_agent_suggestion_config``. Format: + ``projects/{project}/locations/{location}/companionAgents/{companion_agent}`` """ feature_configs: MutableSequence[ @@ -652,6 +661,10 @@ class SuggestionConfig(proto.Message): proto.BOOL, number=9, ) + companion_agent: str = proto.Field( + proto.STRING, + number=11, + ) class SuggestionQueryConfig(proto.Message): r"""Config for suggestion query. diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/generator.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/generator.py index ea735c1c2f52..533d3026ebca 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/generator.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/generator.py @@ -687,8 +687,8 @@ class Generator(proto.Message): Optional. List of CES tool specs that the generator can choose from. ces_app_specs (MutableSequence[google.cloud.dialogflow_v2.types.CesAppSpec]): - Optional. List of CES app specs that the - generator can choose from. + Optional. Deprecated: Use ``ces_tool_specs`` instead. List + of CES app specs that the generator can choose from. """ name: str = proto.Field( diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/grounding.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/grounding.py new file mode 100644 index 000000000000..a856a76d1034 --- /dev/null +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/grounding.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +from __future__ import annotations + +from typing import MutableMapping, MutableSequence + +import proto # type: ignore + +__protobuf__ = proto.module( + package="google.cloud.dialogflow.v2", + manifest={ + "GroundingMetadata", + "SearchEntryPoint", + "GroundingChunk", + "Segment", + "GroundingSupport", + }, +) + + +class GroundingMetadata(proto.Message): + r"""Grounding metadata contains sources, citations, and search + entry points used to ground a generated answer or suggestion. + + Attributes: + web_search_queries (MutableSequence[str]): + Optional. The web search queries that were + used to generate the content. + search_entry_point (google.cloud.dialogflow_v2.types.SearchEntryPoint): + Optional. A web search entry point that can + be used to display search results. + grounding_chunks (MutableSequence[google.cloud.dialogflow_v2.types.GroundingChunk]): + Optional. A list of supporting references + retrieved from the grounding source. + grounding_supports (MutableSequence[google.cloud.dialogflow_v2.types.GroundingSupport]): + Optional. A list of grounding supports that + connect the generated content to the grounding + chunks. + """ + + web_search_queries: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=1, + ) + search_entry_point: "SearchEntryPoint" = proto.Field( + proto.MESSAGE, + number=2, + message="SearchEntryPoint", + ) + grounding_chunks: MutableSequence["GroundingChunk"] = proto.RepeatedField( + proto.MESSAGE, + number=3, + message="GroundingChunk", + ) + grounding_supports: MutableSequence["GroundingSupport"] = proto.RepeatedField( + proto.MESSAGE, + number=4, + message="GroundingSupport", + ) + + +class SearchEntryPoint(proto.Message): + r"""A web search entry point that can be used to display search + results. + + Attributes: + rendered_content (str): + Optional. An HTML snippet that can be + embedded in a web page or an application's + webview. This snippet displays a search result, + including the title, URL, and a brief + description of the search result. + """ + + rendered_content: str = proto.Field( + proto.STRING, + number=1, + ) + + +class GroundingChunk(proto.Message): + r"""A piece of evidence that supports a claim made by the model. + + This is used to show a citation for a claim made by the model. + It contains a reference to the source of the information. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + web (google.cloud.dialogflow_v2.types.GroundingChunk.Web): + Optional. A grounding chunk from a web page, typically from + web search. See the ``Web`` message for details. + + This field is a member of `oneof`_ ``chunk_type``. + retrieved_context (google.cloud.dialogflow_v2.types.GroundingChunk.RetrievedContext): + Optional. A grounding chunk from a data + source retrieved by a data store tool. + + This field is a member of `oneof`_ ``chunk_type``. + """ + + class Web(proto.Message): + r"""A ``Web`` chunk is a piece of evidence that comes from a web page. + It contains the URI of the web page, the title of the page, and the + domain of the page. This is used to provide the user with a link to + the source of the information. + + Attributes: + uri (str): + Output only. The URI of the web page that + contains the evidence. + title (str): + Output only. The title of the web page that + contains the evidence. + domain (str): + Output only. The domain of the web page that + contains the evidence. This can be used to + filter out low-quality sources. + """ + + uri: str = proto.Field( + proto.STRING, + number=1, + ) + title: str = proto.Field( + proto.STRING, + number=2, + ) + domain: str = proto.Field( + proto.STRING, + number=3, + ) + + class RetrievedContext(proto.Message): + r"""Context retrieved from a data source to ground the model's + response. This is used when a retrieval tool fetches information + from a user-provided corpus or a public dataset. + + Attributes: + uri (str): + Output only. The URI of the retrieved data + source. + title (str): + Output only. The title of the retrieved data + source. + text (str): + Output only. The content of the retrieved + data source. + """ + + uri: str = proto.Field( + proto.STRING, + number=1, + ) + title: str = proto.Field( + proto.STRING, + number=2, + ) + text: str = proto.Field( + proto.STRING, + number=3, + ) + + web: Web = proto.Field( + proto.MESSAGE, + number=1, + oneof="chunk_type", + message=Web, + ) + retrieved_context: RetrievedContext = proto.Field( + proto.MESSAGE, + number=2, + oneof="chunk_type", + message=RetrievedContext, + ) + + +class Segment(proto.Message): + r"""A segment of the content. + + Attributes: + start_index (int): + Output only. The start index of the segment, + measured in bytes. This marks the beginning of + the segment and is inclusive, meaning the byte + at this index is the first byte of the segment. + end_index (int): + Output only. The end index of the segment, + measured in bytes. This marks the end of the + segment and is exclusive, meaning the segment + includes content up to, but not including, the + byte at this index. + text (str): + Output only. The text of the segment. + """ + + start_index: int = proto.Field( + proto.INT32, + number=1, + ) + end_index: int = proto.Field( + proto.INT32, + number=2, + ) + text: str = proto.Field( + proto.STRING, + number=3, + ) + + +class GroundingSupport(proto.Message): + r"""A collection of supporting references for a segment or part + of the model's response. + + Attributes: + segment (google.cloud.dialogflow_v2.types.Segment): + Optional. Segment of the content this support + belongs to. + grounding_chunk_indices (MutableSequence[int]): + Optional. A list of indices into ``grounding_chunks`` field + specifying the citations associated with the claim. For + instance [1, 3] means that grounding_chunks[1] and + grounding_chunks[3] are the retrieved contents attributed to + the claim. + """ + + segment: "Segment" = proto.Field( + proto.MESSAGE, + number=1, + message="Segment", + ) + grounding_chunk_indices: MutableSequence[int] = proto.RepeatedField( + proto.INT32, + number=2, + ) + + +__all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/participant.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/participant.py index 56f9fe9491fd..2ba381676add 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/participant.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/participant.py @@ -24,7 +24,12 @@ import proto # type: ignore from google.cloud.dialogflow_v2.types import audio_config as gcd_audio_config -from google.cloud.dialogflow_v2.types import generator, session +from google.cloud.dialogflow_v2.types import ( + companion_agent, + generator, + grounding, + session, +) __protobuf__ = proto.module( package="google.cloud.dialogflow.v2", @@ -47,6 +52,10 @@ "SuggestFaqAnswersRequest", "SuggestFaqAnswersResponse", "GenerateSuggestionsResponse", + "ToolCallSuggestion", + "ToolCallEvents", + "CompanionSuggestion", + "GenerateCompanionSuggestionsResponse", "SuggestSmartRepliesRequest", "SuggestSmartRepliesResponse", "AudioInput", @@ -69,6 +78,11 @@ "ServiceLatency", "KnowledgeAssistDebugInfo", "KnowledgeAssistAnswer", + "StreamingReactiveCompanionSuggestionsRequest", + "CancelQuery", + "StreamingReactiveCompanionSuggestionsResponse", + "BidiStreamingAnalyzeContentRequest", + "BidiStreamingAnalyzeContentResponse", }, ) @@ -298,7 +312,8 @@ class Message(proto.Message): Optional. The unique identifier of the message. Format: ``projects//locations//conversations//messages/``. content (str): - Required. The message content. + Optional. The message content. Only one of ``content`` and + ``companion_query`` should be set - not both. language_code (str): Optional. The message language. This should be a `BCP-47 `__ @@ -805,6 +820,11 @@ class StreamingAnalyzeContentRequest(proto.Message): This input is ignored if the previous response indicated that DTMF input is not accepted. + This field is a member of `oneof`_ ``input``. + suggestion_input (google.cloud.dialogflow_v2.types.SuggestionInput): + Optional. Input for confirming, revising, or + canceling a suggestion. + This field is a member of `oneof`_ ``input``. query_params (google.cloud.dialogflow_v2.types.QueryParameters): Parameters for a Dialogflow virtual-agent @@ -894,6 +914,12 @@ class StreamingAnalyzeContentRequest(proto.Message): oneof="input", message=gcd_audio_config.TelephonyDtmfEvents, ) + suggestion_input: "SuggestionInput" = proto.Field( + proto.MESSAGE, + number=27, + oneof="input", + message="SuggestionInput", + ) query_params: session.QueryParameters = proto.Field( proto.MESSAGE, number=7, @@ -1285,6 +1311,207 @@ class GeneratorSuggestionAnswer(proto.Message): ) +class ToolCallSuggestion(proto.Message): + r"""Structured wrapper that pairs tool execution details with + strongly-typed citations. + + Attributes: + tool_call_info (google.cloud.dialogflow_v2.types.GeneratorSuggestion.ToolCallInfo): + Optional. Tool execution request/response + details. + text_update (str): + Optional. The conversational text update + generated by the agent accompanying this tool + call (e.g. "The status of your order 12345 is + currently being retrieved..."). This is a status + update emitted alongside in-flight tool + execution and is not accumulated into the final + response. + """ + + tool_call_info: generator.GeneratorSuggestion.ToolCallInfo = proto.Field( + proto.MESSAGE, + number=1, + message=generator.GeneratorSuggestion.ToolCallInfo, + ) + text_update: str = proto.Field( + proto.STRING, + number=2, + ) + + +class ToolCallEvents(proto.Message): + r"""Represents events containing tool call execution progress. + + Attributes: + tool_call_suggestions (MutableSequence[google.cloud.dialogflow_v2.types.ToolCallSuggestion]): + Optional. Tool call suggestions associated + with these events. + """ + + tool_call_suggestions: MutableSequence["ToolCallSuggestion"] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message="ToolCallSuggestion", + ) + + +class CompanionSuggestion(proto.Message): + r"""Represents a companion suggestion answer. + + Attributes: + guidances (MutableSequence[google.cloud.dialogflow_v2.types.CompanionSuggestion.Guidance]): + List of guidances generated by the Companion + Agent. + """ + + class Guidance(proto.Message): + r"""Represents guidance for companion suggestion. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + suggested_reply (str): + Suggested reply for the agent to respond to + the customer. + suggested_action (str): + Suggested action to human agent. For example, + "Ask the customer for their shipping address" or + "Create a new case for the customer". + instruction_source (google.cloud.dialogflow_v2.types.GuidanceInstruction): + Guidance instruction source. + knowledge_sources (MutableSequence[google.cloud.dialogflow_v2.types.CompanionSuggestion.Guidance.KnowledgeSource]): + Knowledge sources. + explanation (str): + Optional. A brief explanation of why the + action is suggested. + grounding_metadata (google.cloud.dialogflow_v2.types.GroundingMetadata): + Optional. Grounding metadata for the + generated guidance. + + This field is a member of `oneof`_ ``_grounding_metadata``. + tool_calls (MutableSequence[google.cloud.dialogflow_v2.types.ToolCallSuggestion]): + Optional. Rich structured tool calls and + their associated citations delivered directly as + suggestions. + triggering_tool_call_answer_records (MutableSequence[str]): + Optional. The AnswerRecords of the tool calls that triggered + this guidance. Format: + ``projects//locations//answerRecords/``. + """ + + class KnowledgeSource(proto.Message): + r"""Represents a knowledge source for the guidance. + + Attributes: + knowledge_article_url (str): + URL of the knowledge article. + knowledge_article_title (str): + Knowledge article title. + knowledge_snippet (str): + Knowledge snippet. + """ + + knowledge_article_url: str = proto.Field( + proto.STRING, + number=1, + ) + knowledge_article_title: str = proto.Field( + proto.STRING, + number=2, + ) + knowledge_snippet: str = proto.Field( + proto.STRING, + number=3, + ) + + suggested_reply: str = proto.Field( + proto.STRING, + number=1, + ) + suggested_action: str = proto.Field( + proto.STRING, + number=2, + ) + instruction_source: companion_agent.GuidanceInstruction = proto.Field( + proto.MESSAGE, + number=3, + message=companion_agent.GuidanceInstruction, + ) + knowledge_sources: MutableSequence[ + "CompanionSuggestion.Guidance.KnowledgeSource" + ] = proto.RepeatedField( + proto.MESSAGE, + number=4, + message="CompanionSuggestion.Guidance.KnowledgeSource", + ) + explanation: str = proto.Field( + proto.STRING, + number=12, + ) + grounding_metadata: grounding.GroundingMetadata = proto.Field( + proto.MESSAGE, + number=6, + optional=True, + message=grounding.GroundingMetadata, + ) + tool_calls: MutableSequence["ToolCallSuggestion"] = proto.RepeatedField( + proto.MESSAGE, + number=7, + message="ToolCallSuggestion", + ) + triggering_tool_call_answer_records: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=11, + ) + + guidances: MutableSequence[Guidance] = proto.RepeatedField( + proto.MESSAGE, + number=1, + message=Guidance, + ) + + +class GenerateCompanionSuggestionsResponse(proto.Message): + r"""Represents the response message for + GenerateCompanionSuggestions. + + Attributes: + companion_suggestion (google.cloud.dialogflow_v2.types.CompanionSuggestion): + Contains the core suggestion generated by the + Companion Agent. + answer_record (str): + Answer record that uniquely identifies the suggestion. + Format: + ``projects//locations//answerRecords/``. + latest_message (str): + The name of the latest conversation message used to compile + suggestion for. Format: + ``projects//locations//conversations//messages/``. + suggestion_index (int): + Output only. The 1-based sequential index of + the suggestion generated in this session. + """ + + companion_suggestion: "CompanionSuggestion" = proto.Field( + proto.MESSAGE, + number=1, + message="CompanionSuggestion", + ) + answer_record: str = proto.Field( + proto.STRING, + number=2, + ) + latest_message: str = proto.Field( + proto.STRING, + number=3, + ) + suggestion_index: int = proto.Field( + proto.INT32, + number=4, + ) + + class SuggestSmartRepliesRequest(proto.Message): r"""The request message for [Participants.SuggestSmartReplies][google.cloud.dialogflow.v2.Participants.SuggestSmartReplies]. @@ -1744,6 +1971,10 @@ class SuggestionResult(proto.Message): Suggestions generated using generators triggered by customer or agent messages. + This field is a member of `oneof`_ ``suggestion_response``. + generate_companion_suggestions_response (google.cloud.dialogflow_v2.types.GenerateCompanionSuggestionsResponse): + Suggestions generated by companion agent. + This field is a member of `oneof`_ ``suggestion_response``. """ @@ -1783,6 +2014,14 @@ class SuggestionResult(proto.Message): oneof="suggestion_response", message="GenerateSuggestionsResponse", ) + generate_companion_suggestions_response: "GenerateCompanionSuggestionsResponse" = ( + proto.Field( + proto.MESSAGE, + number=10, + oneof="suggestion_response", + message="GenerateCompanionSuggestionsResponse", + ) + ) class InputTextConfig(proto.Message): @@ -2228,7 +2467,8 @@ class KnowledgeAssistDebugInfo(proto.Message): service_latency (google.cloud.dialogflow_v2.types.ServiceLatency): The latency of the service. query_generation_debug_info (google.cloud.dialogflow_v2.types.KnowledgeAssistDebugInfo.QueryGenerationDebugInfo): - Token usage metadata for query generation. + Debug information and model metadata for + query generation. ces_debug_info (google.protobuf.struct_pb2.Struct): Debug information from CES runtime API. """ @@ -2438,7 +2678,7 @@ class KnowledgeAssistBehavior(proto.Message): ) class QueryGenerationDebugInfo(proto.Message): - r"""Token usage metadata for query generation. + r"""Debug information and model metadata for query generation. Attributes: prompt_token_count (int): @@ -2449,6 +2689,18 @@ class QueryGenerationDebugInfo(proto.Message): total_token_count (int): The total number of tokens for the entire request. + thinking_level (str): + The thinking level configured for the Gemini + model. + thinking_budget_tokens (int): + The thinking budget (in number of tokens) + configured for the Gemini model. + similarity_to_last_query (float): + The similarity score of the suggested query + to the last suggested query. + similarity_to_last_query_threshold (float): + The similarity threshold used to filter out + queries similar to the last suggestion. """ prompt_token_count: int = proto.Field( @@ -2463,6 +2715,22 @@ class QueryGenerationDebugInfo(proto.Message): proto.INT32, number=3, ) + thinking_level: str = proto.Field( + proto.STRING, + number=4, + ) + thinking_budget_tokens: int = proto.Field( + proto.INT32, + number=5, + ) + similarity_to_last_query: float = proto.Field( + proto.FLOAT, + number=6, + ) + similarity_to_last_query_threshold: float = proto.Field( + proto.FLOAT, + number=7, + ) query_generation_failure_reason: QueryGenerationFailureReason = proto.Field( proto.ENUM, @@ -2768,4 +3036,542 @@ class EventSource(proto.Message): ) +class StreamingReactiveCompanionSuggestionsRequest(proto.Message): + r"""The request message for + [Participants.StreamingReactiveCompanionSuggestions][google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions]. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + participant (str): + Required. The human-agent participant name. Format: + ``projects//locations//conversations//participants/``. + text_input (str): + The natural language text to be processed. + + This field is a member of `oneof`_ ``input``. + cancel_reactive_query (google.cloud.dialogflow_v2.types.CancelQuery): + Signals to cancel the current ongoing + reactive query processing. + + This field is a member of `oneof`_ ``input``. + suggestion_input (google.cloud.dialogflow_v2.types.SuggestionInput): + An input representing the selection of a + suggestion. + + This field is a member of `oneof`_ ``input``. + """ + + participant: str = proto.Field( + proto.STRING, + number=1, + ) + text_input: str = proto.Field( + proto.STRING, + number=2, + oneof="input", + ) + cancel_reactive_query: "CancelQuery" = proto.Field( + proto.MESSAGE, + number=3, + oneof="input", + message="CancelQuery", + ) + suggestion_input: "SuggestionInput" = proto.Field( + proto.MESSAGE, + number=5, + oneof="input", + message="SuggestionInput", + ) + + +class CancelQuery(proto.Message): + r"""Message to signal cancellation of the current query turn. + Cancels the currently active interactive query, not any query + running in the background. + + """ + + +class StreamingReactiveCompanionSuggestionsResponse(proto.Message): + r"""The response message for + [Participants.StreamingReactiveCompanionSuggestions][google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions]. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + response_chunk (str): + Streamed response text chunks. + + This field is a member of `oneof`_ ``response``. + status (google.rpc.status_pb2.Status): + Status of the response for the current query. + If set and non-ok, indicates an error occurred + during processing of the current query, or + confirms that a requested cancellation has + successfully completed (status code CANCELLED). + + This field is a member of `oneof`_ ``response``. + reactive_mode_final_response (google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsResponse.ReactiveModeResponse): + Output only. The final response from the reactive mode + capturing the entire accumulated streaming response, + grounding metadata, and tool calls. Only set when + ``is_final`` is ``true`` and conversational processing for + the query turn completes. + + This field is a member of `oneof`_ ``response``. + intermediate_tool_call_events (google.cloud.dialogflow_v2.types.ToolCallEvents): + Output only. Captures intermediate tool call events that + occur during the execution of the reactive query turn. Note + that conversational messages within tool calls are displayed + within the tool cards and hence are not accumulated within + the ``reactive_mode_final_response.response`` string. + + This field is a member of `oneof`_ ``response``. + is_final (bool): + Output only. Indicates whether the client/UI can accept a + new query for reactive chat. When ``is_final`` is ``true``, + the reactive chat interface is unblocked and ready to + receive new human agent queries. For synchronous turns, this + is set to ``true`` on the final response chunk. For + asynchronous tool calls running in the background, this is + set to ``true`` on the intermediate trigger chunk to unblock + the UI while the background tool execution is in progress. + answer_record (str): + Output only. Only set when ``is_final`` is ``true`` and + conversational turn processing completes. The final answer + record representing the completed suggestion. Only present + in the last chunk of the completed response. + text_message_id (str): + Required. The unique message identifier + corresponding to the human agent query that + generated this response chunk. + send_time (google.protobuf.timestamp_pb2.Timestamp): + The timestamp when the response chunk was + sent by the service. + """ + + class ReactiveModeResponse(proto.Message): + r"""The complete response generated by the reactive mode + capturing the entire accumulated streaming response, grounding + metadata, and tool calls. + + Attributes: + response (str): + Optional. The full reactive suggestion + generated by the Companion Agent. After the last + streaming chunk is sent, this is the final + response concatenating all the streaming + response chunks together to represent the full + reactive suggestion. + grounding_metadata (google.cloud.dialogflow_v2.types.GroundingMetadata): + Optional. Grounding metadata for the + generated response. + tool_calls (MutableSequence[google.cloud.dialogflow_v2.types.ToolCallSuggestion]): + Optional. Captures all the rich structured + tool calls and their associated citations used + by the reactive agent to generate the reactive + suggestion. + """ + + response: str = proto.Field( + proto.STRING, + number=1, + ) + grounding_metadata: grounding.GroundingMetadata = proto.Field( + proto.MESSAGE, + number=2, + message=grounding.GroundingMetadata, + ) + tool_calls: MutableSequence["ToolCallSuggestion"] = proto.RepeatedField( + proto.MESSAGE, + number=3, + message="ToolCallSuggestion", + ) + + response_chunk: str = proto.Field( + proto.STRING, + number=1, + oneof="response", + ) + status: status_pb2.Status = proto.Field( + proto.MESSAGE, + number=3, + oneof="response", + message=status_pb2.Status, + ) + reactive_mode_final_response: ReactiveModeResponse = proto.Field( + proto.MESSAGE, + number=6, + oneof="response", + message=ReactiveModeResponse, + ) + intermediate_tool_call_events: "ToolCallEvents" = proto.Field( + proto.MESSAGE, + number=7, + oneof="response", + message="ToolCallEvents", + ) + is_final: bool = proto.Field( + proto.BOOL, + number=4, + ) + answer_record: str = proto.Field( + proto.STRING, + number=5, + ) + text_message_id: str = proto.Field( + proto.STRING, + number=8, + ) + send_time: timestamp_pb2.Timestamp = proto.Field( + proto.MESSAGE, + number=9, + message=timestamp_pb2.Timestamp, + ) + + +class BidiStreamingAnalyzeContentRequest(proto.Message): + r"""The request message for + [Participants.BidiStreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent]. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + config (google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest.Config): + The config message for this conversation. + + This field is a member of `oneof`_ ``request``. + input (google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest.Input): + Text, audio or other multi-modality inputs. + This is the second and following messages sent + by the client. + + This field is a member of `oneof`_ ``request``. + """ + + class Config(proto.Message): + r"""The config of the session. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + participant (str): + Required. The name of the participant to fetch response for. + Format: + ``projects//locations//conversations//participants/``. + voice_session_config (google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest.Config.VoiceSessionConfig): + Configure a voice-based session. + + This field is a member of `oneof`_ ``config``. + initial_virtual_agent_parameters (google.protobuf.struct_pb2.Struct): + Optional. Parameters to be passed to the + virtual agent at the beginning. + initial_virtual_agent_query_params (google.cloud.dialogflow_v2.types.QueryParameters): + Optional. Initial parameters for the + virtual-agent. + """ + + class VoiceSessionConfig(proto.Message): + r"""The config about how to process the audio for a voice-based + session. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + input_audio_encoding (google.cloud.dialogflow_v2.types.AudioEncoding): + Required. The encoding of input audio. + input_audio_sample_rate_hertz (int): + Required. The sample rate of input audio. + output_audio_encoding (google.cloud.dialogflow_v2.types.OutputAudioEncoding): + Required. The encoding of output audio. + output_audio_sample_rate_hertz (int): + Required. The sample rate of output audio. + enable_cx_proactive_processing (bool): + Optional. Whether to enable CX proactive + processing. + enable_streaming_synthesize (bool): + Optional. If true, Dialogflow will stream the + audio bytes from Cloud TTS for speech synthesis + using the StreamingSynthesize api. + gemini_asr_config (google.cloud.dialogflow_v2.types.SpeechToTextConfig.GeminiAsrConfig): + Optional. Configuration for using Gemini ASR models served + via Vertex AI. This field is only used when + ``use_gemini_asr`` is true. + use_gemini_asr (bool): + Optional. If true, Gemini ASR will be used + for transcription instead of Cloud + Speech-to-Text. If false, Cloud Speech-to-Text + will be used. If unset, this setting is + inherited from the ConversationProfile. + + This field is a member of `oneof`_ ``_use_gemini_asr``. + """ + + input_audio_encoding: gcd_audio_config.AudioEncoding = proto.Field( + proto.ENUM, + number=1, + enum=gcd_audio_config.AudioEncoding, + ) + input_audio_sample_rate_hertz: int = proto.Field( + proto.INT32, + number=2, + ) + output_audio_encoding: gcd_audio_config.OutputAudioEncoding = proto.Field( + proto.ENUM, + number=3, + enum=gcd_audio_config.OutputAudioEncoding, + ) + output_audio_sample_rate_hertz: int = proto.Field( + proto.INT32, + number=4, + ) + enable_cx_proactive_processing: bool = proto.Field( + proto.BOOL, + number=5, + ) + enable_streaming_synthesize: bool = proto.Field( + proto.BOOL, + number=23, + ) + gemini_asr_config: gcd_audio_config.SpeechToTextConfig.GeminiAsrConfig = ( + proto.Field( + proto.MESSAGE, + number=24, + message=gcd_audio_config.SpeechToTextConfig.GeminiAsrConfig, + ) + ) + use_gemini_asr: bool = proto.Field( + proto.BOOL, + number=25, + optional=True, + ) + + participant: str = proto.Field( + proto.STRING, + number=1, + ) + voice_session_config: "BidiStreamingAnalyzeContentRequest.Config.VoiceSessionConfig" = proto.Field( + proto.MESSAGE, + number=2, + oneof="config", + message="BidiStreamingAnalyzeContentRequest.Config.VoiceSessionConfig", + ) + initial_virtual_agent_parameters: struct_pb2.Struct = proto.Field( + proto.MESSAGE, + number=3, + message=struct_pb2.Struct, + ) + initial_virtual_agent_query_params: session.QueryParameters = proto.Field( + proto.MESSAGE, + number=4, + message=session.QueryParameters, + ) + + class TurnInput(proto.Message): + r"""Input that forms data for a single turn. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + text (str): + The UTF-8 encoded natural language text to be + processed. + + This field is a member of `oneof`_ ``main_content``. + intent (str): + The intent to be triggered on V3 agent. Format: + ``projects//locations//locations/ /agents//intents/``. + This can only be used to trigger the Welcome intent id if + the modality is text. + + This field is a member of `oneof`_ ``main_content``. + event (str): + The input event name. + This can only be sent once and would cancel the + ongoing speech recognition if any. To trigger + the Welcome intent use the event "WELCOME". + + This field is a member of `oneof`_ ``main_content``. + suggestion_input (google.cloud.dialogflow_v2.types.SuggestionInput): + Optional. Input for confirming, revising, or + canceling a suggestion. + + This field is a member of `oneof`_ ``main_content``. + virtual_agent_parameters (google.protobuf.struct_pb2.Struct): + Optional. Parameters to be passed to the + virtual agent. + """ + + text: str = proto.Field( + proto.STRING, + number=1, + oneof="main_content", + ) + intent: str = proto.Field( + proto.STRING, + number=2, + oneof="main_content", + ) + event: str = proto.Field( + proto.STRING, + number=3, + oneof="main_content", + ) + suggestion_input: "SuggestionInput" = proto.Field( + proto.MESSAGE, + number=6, + oneof="main_content", + message="SuggestionInput", + ) + virtual_agent_parameters: struct_pb2.Struct = proto.Field( + proto.MESSAGE, + number=4, + message=struct_pb2.Struct, + ) + + class Input(proto.Message): + r"""Input for the conversation. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + audio (bytes): + The content of audio stream to be recognized. + + This field is a member of `oneof`_ ``input``. + dtmf (google.cloud.dialogflow_v2.types.TelephonyDtmfEvents): + The DTMF digits used to invoke intent and + fill in parameter value. + This input is ignored if the previous response + indicated that DTMF input is not accepted. + + This field is a member of `oneof`_ ``input``. + turn (google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest.TurnInput): + Turn input. + + This field is a member of `oneof`_ ``input``. + """ + + audio: bytes = proto.Field( + proto.BYTES, + number=1, + oneof="input", + ) + dtmf: gcd_audio_config.TelephonyDtmfEvents = proto.Field( + proto.MESSAGE, + number=2, + oneof="input", + message=gcd_audio_config.TelephonyDtmfEvents, + ) + turn: "BidiStreamingAnalyzeContentRequest.TurnInput" = proto.Field( + proto.MESSAGE, + number=3, + oneof="input", + message="BidiStreamingAnalyzeContentRequest.TurnInput", + ) + + config: Config = proto.Field( + proto.MESSAGE, + number=1, + oneof="request", + message=Config, + ) + input: Input = proto.Field( + proto.MESSAGE, + number=2, + oneof="request", + message=Input, + ) + + +class BidiStreamingAnalyzeContentResponse(proto.Message): + r"""The response message for + [Participants.BidiStreamingAnalyzeContent][google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent]. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + recognition_result (google.cloud.dialogflow_v2.types.StreamingRecognitionResult): + The result of speech recognition. + + This field is a member of `oneof`_ ``response``. + barge_in_signal (google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentResponse.BargeInSignal): + Indicate the user barge-in has been detected, + and client should stop playing back the audio. + + This field is a member of `oneof`_ ``response``. + analyze_content_response (google.cloud.dialogflow_v2.types.AnalyzeContentResponse): + The agent response from analyze content. + + This field is a member of `oneof`_ ``response``. + turn_complete (google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentResponse.TurnComplete): + Indicate that the turn is complete. + + This field is a member of `oneof`_ ``response``. + """ + + class BargeInSignal(proto.Message): + r"""Indicate the user barge-in has been detected.""" + + class TurnComplete(proto.Message): + r"""Indicate that the turn is complete.""" + + recognition_result: session.StreamingRecognitionResult = proto.Field( + proto.MESSAGE, + number=1, + oneof="response", + message=session.StreamingRecognitionResult, + ) + barge_in_signal: BargeInSignal = proto.Field( + proto.MESSAGE, + number=2, + oneof="response", + message=BargeInSignal, + ) + analyze_content_response: "AnalyzeContentResponse" = proto.Field( + proto.MESSAGE, + number=3, + oneof="response", + message="AnalyzeContentResponse", + ) + turn_complete: TurnComplete = proto.Field( + proto.MESSAGE, + number=4, + oneof="response", + message=TurnComplete, + ) + + __all__ = tuple(sorted(__protobuf__.manifest)) diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/session.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/session.py index 938cdaac6c5f..a6c40710700f 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/session.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/session.py @@ -1102,10 +1102,10 @@ class TextInput(proto.Message): Attributes: text (str): - Required. The UTF-8 encoded natural language - text to be processed. Text length must not - exceed 256 characters for virtual agent - interactions. + Optional. The UTF-8 encoded natural language text to be + processed. Text length must not exceed 256 characters for + virtual agent interactions. Only one of ``text`` and + ``companion_query`` should be set - not both. language_code (str): Required. The language of this conversational query. See `Language diff --git a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/tool_call.py b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/tool_call.py index a929866a0bcf..09a5c9eb408b 100644 --- a/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/tool_call.py +++ b/packages/google-cloud-dialogflow/google/cloud/dialogflow_v2/types/tool_call.py @@ -217,12 +217,19 @@ class Error(proto.Message): Attributes: message (str): Optional. The error message of the function. + retryable (bool): + Optional. Specifies whether the tool call is + retryable. """ message: str = proto.Field( proto.STRING, number=1, ) + retryable: bool = proto.Field( + proto.BOOL, + number=2, + ) tool: str = proto.Field( proto.STRING, diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_async.py new file mode 100644 index 000000000000..b076671c333c --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 CreateCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_CreateCompanionAgent_async] +# 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 dialogflow_v2 + + +async def sample_create_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateCompanionAgentRequest( + parent="parent_value", + ) + + # Make the request + response = await client.create_companion_agent(request=request) + + # Handle the response + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_CreateCompanionAgent_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_sync.py new file mode 100644 index 000000000000..e769b9b0f4b0 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_create_companion_agent_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 CreateCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_CreateCompanionAgent_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 dialogflow_v2 + + +def sample_create_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.CreateCompanionAgentRequest( + parent="parent_value", + ) + + # Make the request + response = client.create_companion_agent(request=request) + + # Handle the response + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_CreateCompanionAgent_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_async.py new file mode 100644 index 000000000000..3f84669d002b --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_async.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 DeleteCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_DeleteCompanionAgent_async] +# 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 dialogflow_v2 + + +async def sample_delete_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteCompanionAgentRequest( + name="name_value", + ) + + # Make the request + await client.delete_companion_agent(request=request) + + +# [END dialogflow_v2_generated_CompanionAgents_DeleteCompanionAgent_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_sync.py new file mode 100644 index 000000000000..2729f2e46062 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_delete_companion_agent_sync.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 DeleteCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_DeleteCompanionAgent_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 dialogflow_v2 + + +def sample_delete_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.DeleteCompanionAgentRequest( + name="name_value", + ) + + # Make the request + client.delete_companion_agent(request=request) + + +# [END dialogflow_v2_generated_CompanionAgents_DeleteCompanionAgent_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_async.py new file mode 100644 index 000000000000..1d13cc2af324 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_async.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 GetCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_GetCompanionAgent_async] +# 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 dialogflow_v2 + + +async def sample_get_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetCompanionAgentRequest( + name="name_value", + ) + + # Make the request + response = await client.get_companion_agent(request=request) + + # Handle the response + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_GetCompanionAgent_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_sync.py new file mode 100644 index 000000000000..c69df5c2a413 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_get_companion_agent_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 GetCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_GetCompanionAgent_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 dialogflow_v2 + + +def sample_get_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.GetCompanionAgentRequest( + name="name_value", + ) + + # Make the request + response = client.get_companion_agent(request=request) + + # Handle the response + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_GetCompanionAgent_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_async.py new file mode 100644 index 000000000000..d598ad2ea024 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_async.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ListCompanionAgents +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_ListCompanionAgents_async] +# 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 dialogflow_v2 + + +async def sample_list_companion_agents(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListCompanionAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_companion_agents(request=request) + + # Handle the response + async for response in page_result: + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_ListCompanionAgents_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_sync.py new file mode 100644 index 000000000000..bd8c6069e24d --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_list_companion_agents_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ListCompanionAgents +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_ListCompanionAgents_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 dialogflow_v2 + + +def sample_list_companion_agents(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.ListCompanionAgentsRequest( + parent="parent_value", + ) + + # Make the request + page_result = client.list_companion_agents(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_ListCompanionAgents_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_async.py new file mode 100644 index 000000000000..c9d4d87bc10f --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_async.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 UpdateCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_UpdateCompanionAgent_async] +# 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 dialogflow_v2 + + +async def sample_update_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateCompanionAgentRequest() + + # Make the request + response = await client.update_companion_agent(request=request) + + # Handle the response + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_UpdateCompanionAgent_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_sync.py new file mode 100644 index 000000000000..2b1d275d596c --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_companion_agents_update_companion_agent_sync.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 UpdateCompanionAgent +# 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-dialogflow + + +# [START dialogflow_v2_generated_CompanionAgents_UpdateCompanionAgent_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 dialogflow_v2 + + +def sample_update_companion_agent(): + # Create a client + client = dialogflow_v2.CompanionAgentsClient() + + # Initialize request argument(s) + request = dialogflow_v2.UpdateCompanionAgentRequest() + + # Make the request + response = client.update_companion_agent(request=request) + + # Handle the response + print(response) + + +# [END dialogflow_v2_generated_CompanionAgents_UpdateCompanionAgent_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_async.py index c9b9858c0c8a..7733c6ae67e1 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_async.py +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_async.py @@ -40,7 +40,6 @@ async def sample_generate_stateless_summary(): # Initialize request argument(s) stateless_conversation = dialogflow_v2.MinimalConversation() - stateless_conversation.messages.content = "content_value" stateless_conversation.parent = "parent_value" conversation_profile = dialogflow_v2.ConversationProfile() diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_sync.py index d4565a97f7a6..0cace9d627dd 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_sync.py +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_generate_stateless_summary_sync.py @@ -40,7 +40,6 @@ def sample_generate_stateless_summary(): # Initialize request argument(s) stateless_conversation = dialogflow_v2.MinimalConversation() - stateless_conversation.messages.content = "content_value" stateless_conversation.parent = "parent_value" conversation_profile = dialogflow_v2.ConversationProfile() diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_async.py index f7d19ef87495..743b375af0a3 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_async.py +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_async.py @@ -40,7 +40,6 @@ async def sample_search_knowledge(): # Initialize request argument(s) query = dialogflow_v2.TextInput() - query.text = "text_value" query.language_code = "language_code_value" request = dialogflow_v2.SearchKnowledgeRequest( diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_sync.py index c18aa2aac797..b4740b7d1995 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_sync.py +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_conversations_search_knowledge_sync.py @@ -40,7 +40,6 @@ def sample_search_knowledge(): # Initialize request argument(s) query = dialogflow_v2.TextInput() - query.text = "text_value" query.language_code = "language_code_value" request = dialogflow_v2.SearchKnowledgeRequest( diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py index 6453663c0030..79af98765b53 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_async.py @@ -40,7 +40,6 @@ async def sample_analyze_content(): # Initialize request argument(s) text_input = dialogflow_v2.TextInput() - text_input.text = "text_value" text_input.language_code = "language_code_value" request = dialogflow_v2.AnalyzeContentRequest( diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py index 9cfb904c4475..31f5d416c3cf 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_analyze_content_sync.py @@ -40,7 +40,6 @@ def sample_analyze_content(): # Initialize request argument(s) text_input = dialogflow_v2.TextInput() - text_input.text = "text_value" text_input.language_code = "language_code_value" request = dialogflow_v2.AnalyzeContentRequest( diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_async.py new file mode 100644 index 000000000000..dd7aeb0b010a --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_async.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 BidiStreamingAnalyzeContent +# 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-dialogflow + + +# [START dialogflow_v2_generated_Participants_BidiStreamingAnalyzeContent_async] +# 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 dialogflow_v2 + + +async def sample_bidi_streaming_analyze_content(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + config = dialogflow_v2.Config() + config.voice_session_config.input_audio_encoding = "AUDIO_ENCODING_ALAW" + config.voice_session_config.input_audio_sample_rate_hertz = 3097 + config.voice_session_config.output_audio_encoding = "OUTPUT_AUDIO_ENCODING_ALAW" + config.voice_session_config.output_audio_sample_rate_hertz = 3226 + config.participant = "participant_value" + + request = dialogflow_v2.BidiStreamingAnalyzeContentRequest( + config=config, + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.BidiStreamingAnalyzeContentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = await client.bidi_streaming_analyze_content(requests=request_generator()) + + # Handle the response + async for response in stream: + print(response) + + +# [END dialogflow_v2_generated_Participants_BidiStreamingAnalyzeContent_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_sync.py new file mode 100644 index 000000000000..c7d2da56a6a7 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_bidi_streaming_analyze_content_sync.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 BidiStreamingAnalyzeContent +# 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-dialogflow + + +# [START dialogflow_v2_generated_Participants_BidiStreamingAnalyzeContent_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 dialogflow_v2 + + +def sample_bidi_streaming_analyze_content(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + config = dialogflow_v2.Config() + config.voice_session_config.input_audio_encoding = "AUDIO_ENCODING_ALAW" + config.voice_session_config.input_audio_sample_rate_hertz = 3097 + config.voice_session_config.output_audio_encoding = "OUTPUT_AUDIO_ENCODING_ALAW" + config.voice_session_config.output_audio_sample_rate_hertz = 3226 + config.participant = "participant_value" + + request = dialogflow_v2.BidiStreamingAnalyzeContentRequest( + config=config, + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.BidiStreamingAnalyzeContentRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = client.bidi_streaming_analyze_content(requests=request_generator()) + + # Handle the response + for response in stream: + print(response) + + +# [END dialogflow_v2_generated_Participants_BidiStreamingAnalyzeContent_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_async.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_async.py new file mode 100644 index 000000000000..8c1a172f8111 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_async.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 StreamingReactiveCompanionSuggestions +# 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-dialogflow + + +# [START dialogflow_v2_generated_Participants_StreamingReactiveCompanionSuggestions_async] +# 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 dialogflow_v2 + + +async def sample_streaming_reactive_companion_suggestions(): + # Create a client + client = dialogflow_v2.ParticipantsAsyncClient() + + # Initialize request argument(s) + request = dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest( + text_input="text_input_value", + participant="participant_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = await client.streaming_reactive_companion_suggestions( + requests=request_generator() + ) + + # Handle the response + async for response in stream: + print(response) + + +# [END dialogflow_v2_generated_Participants_StreamingReactiveCompanionSuggestions_async] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_sync.py b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_sync.py new file mode 100644 index 000000000000..b0b23b7fa498 --- /dev/null +++ b/packages/google-cloud-dialogflow/samples/generated_samples/dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_sync.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 StreamingReactiveCompanionSuggestions +# 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-dialogflow + + +# [START dialogflow_v2_generated_Participants_StreamingReactiveCompanionSuggestions_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 dialogflow_v2 + + +def sample_streaming_reactive_companion_suggestions(): + # Create a client + client = dialogflow_v2.ParticipantsClient() + + # Initialize request argument(s) + request = dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest( + text_input="text_input_value", + participant="participant_value", + ) + + # This method expects an iterator which contains + # 'dialogflow_v2.StreamingReactiveCompanionSuggestionsRequest' objects + # Here we create a generator that yields a single `request` for + # demonstrative purposes. + requests = [request] + + def request_generator(): + for request in requests: + yield request + + # Make the request + stream = client.streaming_reactive_companion_suggestions( + requests=request_generator() + ) + + # Handle the response + for response in stream: + print(response) + + +# [END dialogflow_v2_generated_Participants_StreamingReactiveCompanionSuggestions_sync] diff --git a/packages/google-cloud-dialogflow/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.v2.json b/packages/google-cloud-dialogflow/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.v2.json index 7a0833964a48..b5a5d3196021 100644 --- a/packages/google-cloud-dialogflow/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.v2.json +++ b/packages/google-cloud-dialogflow/samples/generated_samples/snippet_metadata_google.cloud.dialogflow.v2.json @@ -1760,6 +1760,829 @@ ], "title": "dialogflow_v2_generated_answer_records_update_answer_record_sync.py" }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient", + "shortName": "CompanionAgentsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.create_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.CreateCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "CreateCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.CreateCompanionAgentRequest" + }, + { + "name": "parent", + "type": "str" + }, + { + "name": "companion_agent", + "type": "google.cloud.dialogflow_v2.types.CompanionAgent" + }, + { + "name": "companion_agent_id", + "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.dialogflow_v2.types.CompanionAgent", + "shortName": "create_companion_agent" + }, + "description": "Sample for CreateCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_create_companion_agent_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_CreateCompanionAgent_async", + "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": "dialogflow_v2_generated_companion_agents_create_companion_agent_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient", + "shortName": "CompanionAgentsClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient.create_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.CreateCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "CreateCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.CreateCompanionAgentRequest" + }, + { + "name": "parent", + "type": "str" + }, + { + "name": "companion_agent", + "type": "google.cloud.dialogflow_v2.types.CompanionAgent" + }, + { + "name": "companion_agent_id", + "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.dialogflow_v2.types.CompanionAgent", + "shortName": "create_companion_agent" + }, + "description": "Sample for CreateCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_create_companion_agent_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_CreateCompanionAgent_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": "dialogflow_v2_generated_companion_agents_create_companion_agent_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient", + "shortName": "CompanionAgentsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.delete_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.DeleteCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "DeleteCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.DeleteCompanionAgentRequest" + }, + { + "name": "name", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "shortName": "delete_companion_agent" + }, + "description": "Sample for DeleteCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_delete_companion_agent_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_DeleteCompanionAgent_async", + "segments": [ + { + "end": 49, + "start": 27, + "type": "FULL" + }, + { + "end": 49, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_companion_agents_delete_companion_agent_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient", + "shortName": "CompanionAgentsClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient.delete_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.DeleteCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "DeleteCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.DeleteCompanionAgentRequest" + }, + { + "name": "name", + "type": "str" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "shortName": "delete_companion_agent" + }, + "description": "Sample for DeleteCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_delete_companion_agent_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_DeleteCompanionAgent_sync", + "segments": [ + { + "end": 49, + "start": 27, + "type": "FULL" + }, + { + "end": 49, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 45, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "start": 46, + "type": "REQUEST_EXECUTION" + }, + { + "end": 50, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_companion_agents_delete_companion_agent_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient", + "shortName": "CompanionAgentsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.get_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.GetCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "GetCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.GetCompanionAgentRequest" + }, + { + "name": "name", + "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.dialogflow_v2.types.CompanionAgent", + "shortName": "get_companion_agent" + }, + "description": "Sample for GetCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_get_companion_agent_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_GetCompanionAgent_async", + "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": "dialogflow_v2_generated_companion_agents_get_companion_agent_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient", + "shortName": "CompanionAgentsClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient.get_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.GetCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "GetCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.GetCompanionAgentRequest" + }, + { + "name": "name", + "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.dialogflow_v2.types.CompanionAgent", + "shortName": "get_companion_agent" + }, + "description": "Sample for GetCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_get_companion_agent_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_GetCompanionAgent_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": "dialogflow_v2_generated_companion_agents_get_companion_agent_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient", + "shortName": "CompanionAgentsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.list_companion_agents", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.ListCompanionAgents", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "ListCompanionAgents" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.ListCompanionAgentsRequest" + }, + { + "name": "parent", + "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.dialogflow_v2.services.companion_agents.pagers.ListCompanionAgentsAsyncPager", + "shortName": "list_companion_agents" + }, + "description": "Sample for ListCompanionAgents", + "file": "dialogflow_v2_generated_companion_agents_list_companion_agents_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_ListCompanionAgents_async", + "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": "dialogflow_v2_generated_companion_agents_list_companion_agents_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient", + "shortName": "CompanionAgentsClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient.list_companion_agents", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.ListCompanionAgents", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "ListCompanionAgents" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.ListCompanionAgentsRequest" + }, + { + "name": "parent", + "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.dialogflow_v2.services.companion_agents.pagers.ListCompanionAgentsPager", + "shortName": "list_companion_agents" + }, + "description": "Sample for ListCompanionAgents", + "file": "dialogflow_v2_generated_companion_agents_list_companion_agents_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_ListCompanionAgents_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": "dialogflow_v2_generated_companion_agents_list_companion_agents_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient", + "shortName": "CompanionAgentsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsAsyncClient.update_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.UpdateCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "UpdateCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.UpdateCompanionAgentRequest" + }, + { + "name": "companion_agent", + "type": "google.cloud.dialogflow_v2.types.CompanionAgent" + }, + { + "name": "update_mask", + "type": "google.protobuf.field_mask_pb2.FieldMask" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.dialogflow_v2.types.CompanionAgent", + "shortName": "update_companion_agent" + }, + "description": "Sample for UpdateCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_update_companion_agent_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_UpdateCompanionAgent_async", + "segments": [ + { + "end": 50, + "start": 27, + "type": "FULL" + }, + { + "end": 50, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 44, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 47, + "start": 45, + "type": "REQUEST_EXECUTION" + }, + { + "end": 51, + "start": 48, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_companion_agents_update_companion_agent_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient", + "shortName": "CompanionAgentsClient" + }, + "fullName": "google.cloud.dialogflow_v2.CompanionAgentsClient.update_companion_agent", + "method": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents.UpdateCompanionAgent", + "service": { + "fullName": "google.cloud.dialogflow.v2.CompanionAgents", + "shortName": "CompanionAgents" + }, + "shortName": "UpdateCompanionAgent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.UpdateCompanionAgentRequest" + }, + { + "name": "companion_agent", + "type": "google.cloud.dialogflow_v2.types.CompanionAgent" + }, + { + "name": "update_mask", + "type": "google.protobuf.field_mask_pb2.FieldMask" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.dialogflow_v2.types.CompanionAgent", + "shortName": "update_companion_agent" + }, + "description": "Sample for UpdateCompanionAgent", + "file": "dialogflow_v2_generated_companion_agents_update_companion_agent_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_CompanionAgents_UpdateCompanionAgent_sync", + "segments": [ + { + "end": 50, + "start": 27, + "type": "FULL" + }, + { + "end": 50, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 44, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 47, + "start": 45, + "type": "REQUEST_EXECUTION" + }, + { + "end": 51, + "start": 48, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_companion_agents_update_companion_agent_sync.py" + }, { "canonical": true, "clientMethod": { @@ -6681,12 +7504,12 @@ "regionTag": "dialogflow_v2_generated_Conversations_GenerateStatelessSummary_async", "segments": [ { - "end": 59, + "end": 58, "start": 27, "type": "FULL" }, { - "end": 59, + "end": 58, "start": 27, "type": "SHORT" }, @@ -6696,18 +7519,18 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 53, + "end": 52, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 56, - "start": 54, + "end": 55, + "start": 53, "type": "REQUEST_EXECUTION" }, { - "end": 60, - "start": 57, + "end": 59, + "start": 56, "type": "RESPONSE_HANDLING" } ], @@ -6757,12 +7580,12 @@ "regionTag": "dialogflow_v2_generated_Conversations_GenerateStatelessSummary_sync", "segments": [ { - "end": 59, + "end": 58, "start": 27, "type": "FULL" }, { - "end": 59, + "end": 58, "start": 27, "type": "SHORT" }, @@ -6772,18 +7595,18 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 53, + "end": 52, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 56, - "start": 54, + "end": 55, + "start": 53, "type": "REQUEST_EXECUTION" }, { - "end": 60, - "start": 57, + "end": 59, + "start": 56, "type": "RESPONSE_HANDLING" } ], @@ -7647,12 +8470,12 @@ "regionTag": "dialogflow_v2_generated_Conversations_SearchKnowledge_async", "segments": [ { - "end": 58, + "end": 57, "start": 27, "type": "FULL" }, { - "end": 58, + "end": 57, "start": 27, "type": "SHORT" }, @@ -7662,18 +8485,18 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 52, + "end": 51, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 55, - "start": 53, + "end": 54, + "start": 52, "type": "REQUEST_EXECUTION" }, { - "end": 59, - "start": 56, + "end": 58, + "start": 55, "type": "RESPONSE_HANDLING" } ], @@ -7723,12 +8546,12 @@ "regionTag": "dialogflow_v2_generated_Conversations_SearchKnowledge_sync", "segments": [ { - "end": 58, + "end": 57, "start": 27, "type": "FULL" }, { - "end": 58, + "end": 57, "start": 27, "type": "SHORT" }, @@ -7738,18 +8561,18 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 52, + "end": 51, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 55, - "start": 53, + "end": 54, + "start": 52, "type": "REQUEST_EXECUTION" }, { - "end": 59, - "start": 56, + "end": 58, + "start": 55, "type": "RESPONSE_HANDLING" } ], @@ -15887,16 +16710,201 @@ }, "parameters": [ { - "name": "request", - "type": "google.cloud.dialogflow_v2.types.UpdateKnowledgeBaseRequest" + "name": "request", + "type": "google.cloud.dialogflow_v2.types.UpdateKnowledgeBaseRequest" + }, + { + "name": "knowledge_base", + "type": "google.cloud.dialogflow_v2.types.KnowledgeBase" + }, + { + "name": "update_mask", + "type": "google.protobuf.field_mask_pb2.FieldMask" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.dialogflow_v2.types.KnowledgeBase", + "shortName": "update_knowledge_base" + }, + "description": "Sample for UpdateKnowledgeBase", + "file": "dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_sync", + "segments": [ + { + "end": 54, + "start": 27, + "type": "FULL" + }, + { + "end": 54, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 48, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 51, + "start": 49, + "type": "REQUEST_EXECUTION" + }, + { + "end": 55, + "start": 52, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient", + "shortName": "ParticipantsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient.analyze_content", + "method": { + "fullName": "google.cloud.dialogflow.v2.Participants.AnalyzeContent", + "service": { + "fullName": "google.cloud.dialogflow.v2.Participants", + "shortName": "Participants" + }, + "shortName": "AnalyzeContent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.AnalyzeContentRequest" + }, + { + "name": "participant", + "type": "str" + }, + { + "name": "text_input", + "type": "google.cloud.dialogflow_v2.types.TextInput" + }, + { + "name": "event_input", + "type": "google.cloud.dialogflow_v2.types.EventInput" + }, + { + "name": "audio_input", + "type": "google.cloud.dialogflow_v2.types.AudioInput" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "google.cloud.dialogflow_v2.types.AnalyzeContentResponse", + "shortName": "analyze_content" + }, + "description": "Sample for AnalyzeContent", + "file": "dialogflow_v2_generated_participants_analyze_content_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_Participants_AnalyzeContent_async", + "segments": [ + { + "end": 55, + "start": 27, + "type": "FULL" + }, + { + "end": 55, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 49, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 52, + "start": 50, + "type": "REQUEST_EXECUTION" + }, + { + "end": 56, + "start": 53, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_participants_analyze_content_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.ParticipantsClient", + "shortName": "ParticipantsClient" + }, + "fullName": "google.cloud.dialogflow_v2.ParticipantsClient.analyze_content", + "method": { + "fullName": "google.cloud.dialogflow.v2.Participants.AnalyzeContent", + "service": { + "fullName": "google.cloud.dialogflow.v2.Participants", + "shortName": "Participants" + }, + "shortName": "AnalyzeContent" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.dialogflow_v2.types.AnalyzeContentRequest" + }, + { + "name": "participant", + "type": "str" + }, + { + "name": "text_input", + "type": "google.cloud.dialogflow_v2.types.TextInput" }, { - "name": "knowledge_base", - "type": "google.cloud.dialogflow_v2.types.KnowledgeBase" + "name": "event_input", + "type": "google.cloud.dialogflow_v2.types.EventInput" }, { - "name": "update_mask", - "type": "google.protobuf.field_mask_pb2.FieldMask" + "name": "audio_input", + "type": "google.cloud.dialogflow_v2.types.AudioInput" }, { "name": "retry", @@ -15911,22 +16919,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.dialogflow_v2.types.KnowledgeBase", - "shortName": "update_knowledge_base" + "resultType": "google.cloud.dialogflow_v2.types.AnalyzeContentResponse", + "shortName": "analyze_content" }, - "description": "Sample for UpdateKnowledgeBase", - "file": "dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py", + "description": "Sample for AnalyzeContent", + "file": "dialogflow_v2_generated_participants_analyze_content_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "dialogflow_v2_generated_KnowledgeBases_UpdateKnowledgeBase_sync", + "regionTag": "dialogflow_v2_generated_Participants_AnalyzeContent_sync", "segments": [ { - "end": 54, + "end": 55, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 55, "start": 27, "type": "SHORT" }, @@ -15936,22 +16944,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 49, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 52, + "start": 50, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 56, + "start": 53, "type": "RESPONSE_HANDLING" } ], - "title": "dialogflow_v2_generated_knowledge_bases_update_knowledge_base_sync.py" + "title": "dialogflow_v2_generated_participants_analyze_content_sync.py" }, { "canonical": true, @@ -15961,35 +16969,19 @@ "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient", "shortName": "ParticipantsAsyncClient" }, - "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient.analyze_content", + "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient.bidi_streaming_analyze_content", "method": { - "fullName": "google.cloud.dialogflow.v2.Participants.AnalyzeContent", + "fullName": "google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent", "service": { "fullName": "google.cloud.dialogflow.v2.Participants", "shortName": "Participants" }, - "shortName": "AnalyzeContent" + "shortName": "BidiStreamingAnalyzeContent" }, "parameters": [ { - "name": "request", - "type": "google.cloud.dialogflow_v2.types.AnalyzeContentRequest" - }, - { - "name": "participant", - "type": "str" - }, - { - "name": "text_input", - "type": "google.cloud.dialogflow_v2.types.TextInput" - }, - { - "name": "event_input", - "type": "google.cloud.dialogflow_v2.types.EventInput" - }, - { - "name": "audio_input", - "type": "google.cloud.dialogflow_v2.types.AudioInput" + "name": "requests", + "type": "Iterator[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest]" }, { "name": "retry", @@ -16004,22 +16996,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.dialogflow_v2.types.AnalyzeContentResponse", - "shortName": "analyze_content" + "resultType": "Iterable[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentResponse]", + "shortName": "bidi_streaming_analyze_content" }, - "description": "Sample for AnalyzeContent", - "file": "dialogflow_v2_generated_participants_analyze_content_async.py", + "description": "Sample for BidiStreamingAnalyzeContent", + "file": "dialogflow_v2_generated_participants_bidi_streaming_analyze_content_async.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "dialogflow_v2_generated_Participants_AnalyzeContent_async", + "regionTag": "dialogflow_v2_generated_Participants_BidiStreamingAnalyzeContent_async", "segments": [ { - "end": 56, + "end": 69, "start": 27, "type": "FULL" }, { - "end": 56, + "end": 69, "start": 27, "type": "SHORT" }, @@ -16029,22 +17021,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 50, + "end": 62, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 53, - "start": 51, + "end": 65, + "start": 63, "type": "REQUEST_EXECUTION" }, { - "end": 57, - "start": 54, + "end": 70, + "start": 66, "type": "RESPONSE_HANDLING" } ], - "title": "dialogflow_v2_generated_participants_analyze_content_async.py" + "title": "dialogflow_v2_generated_participants_bidi_streaming_analyze_content_async.py" }, { "canonical": true, @@ -16053,35 +17045,19 @@ "fullName": "google.cloud.dialogflow_v2.ParticipantsClient", "shortName": "ParticipantsClient" }, - "fullName": "google.cloud.dialogflow_v2.ParticipantsClient.analyze_content", + "fullName": "google.cloud.dialogflow_v2.ParticipantsClient.bidi_streaming_analyze_content", "method": { - "fullName": "google.cloud.dialogflow.v2.Participants.AnalyzeContent", + "fullName": "google.cloud.dialogflow.v2.Participants.BidiStreamingAnalyzeContent", "service": { "fullName": "google.cloud.dialogflow.v2.Participants", "shortName": "Participants" }, - "shortName": "AnalyzeContent" + "shortName": "BidiStreamingAnalyzeContent" }, "parameters": [ { - "name": "request", - "type": "google.cloud.dialogflow_v2.types.AnalyzeContentRequest" - }, - { - "name": "participant", - "type": "str" - }, - { - "name": "text_input", - "type": "google.cloud.dialogflow_v2.types.TextInput" - }, - { - "name": "event_input", - "type": "google.cloud.dialogflow_v2.types.EventInput" - }, - { - "name": "audio_input", - "type": "google.cloud.dialogflow_v2.types.AudioInput" + "name": "requests", + "type": "Iterator[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentRequest]" }, { "name": "retry", @@ -16096,22 +17072,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.dialogflow_v2.types.AnalyzeContentResponse", - "shortName": "analyze_content" + "resultType": "Iterable[google.cloud.dialogflow_v2.types.BidiStreamingAnalyzeContentResponse]", + "shortName": "bidi_streaming_analyze_content" }, - "description": "Sample for AnalyzeContent", - "file": "dialogflow_v2_generated_participants_analyze_content_sync.py", + "description": "Sample for BidiStreamingAnalyzeContent", + "file": "dialogflow_v2_generated_participants_bidi_streaming_analyze_content_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "dialogflow_v2_generated_Participants_AnalyzeContent_sync", + "regionTag": "dialogflow_v2_generated_Participants_BidiStreamingAnalyzeContent_sync", "segments": [ { - "end": 56, + "end": 69, "start": 27, "type": "FULL" }, { - "end": 56, + "end": 69, "start": 27, "type": "SHORT" }, @@ -16121,22 +17097,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 50, + "end": 62, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 53, - "start": 51, + "end": 65, + "start": 63, "type": "REQUEST_EXECUTION" }, { - "end": 57, - "start": 54, + "end": 70, + "start": 66, "type": "RESPONSE_HANDLING" } ], - "title": "dialogflow_v2_generated_participants_analyze_content_sync.py" + "title": "dialogflow_v2_generated_participants_bidi_streaming_analyze_content_sync.py" }, { "canonical": true, @@ -16782,6 +17758,159 @@ ], "title": "dialogflow_v2_generated_participants_streaming_analyze_content_sync.py" }, + { + "canonical": true, + "clientMethod": { + "async": true, + "client": { + "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient", + "shortName": "ParticipantsAsyncClient" + }, + "fullName": "google.cloud.dialogflow_v2.ParticipantsAsyncClient.streaming_reactive_companion_suggestions", + "method": { + "fullName": "google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions", + "service": { + "fullName": "google.cloud.dialogflow.v2.Participants", + "shortName": "Participants" + }, + "shortName": "StreamingReactiveCompanionSuggestions" + }, + "parameters": [ + { + "name": "requests", + "type": "Iterator[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsRequest]" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "Iterable[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsResponse]", + "shortName": "streaming_reactive_companion_suggestions" + }, + "description": "Sample for StreamingReactiveCompanionSuggestions", + "file": "dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_async.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_Participants_StreamingReactiveCompanionSuggestions_async", + "segments": [ + { + "end": 63, + "start": 27, + "type": "FULL" + }, + { + "end": 63, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 56, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 59, + "start": 57, + "type": "REQUEST_EXECUTION" + }, + { + "end": 64, + "start": 60, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_async.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.dialogflow_v2.ParticipantsClient", + "shortName": "ParticipantsClient" + }, + "fullName": "google.cloud.dialogflow_v2.ParticipantsClient.streaming_reactive_companion_suggestions", + "method": { + "fullName": "google.cloud.dialogflow.v2.Participants.StreamingReactiveCompanionSuggestions", + "service": { + "fullName": "google.cloud.dialogflow.v2.Participants", + "shortName": "Participants" + }, + "shortName": "StreamingReactiveCompanionSuggestions" + }, + "parameters": [ + { + "name": "requests", + "type": "Iterator[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsRequest]" + }, + { + "name": "retry", + "type": "google.api_core.retry.Retry" + }, + { + "name": "timeout", + "type": "float" + }, + { + "name": "metadata", + "type": "Sequence[Tuple[str, Union[str, bytes]]]" + } + ], + "resultType": "Iterable[google.cloud.dialogflow_v2.types.StreamingReactiveCompanionSuggestionsResponse]", + "shortName": "streaming_reactive_companion_suggestions" + }, + "description": "Sample for StreamingReactiveCompanionSuggestions", + "file": "dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "dialogflow_v2_generated_Participants_StreamingReactiveCompanionSuggestions_sync", + "segments": [ + { + "end": 63, + "start": 27, + "type": "FULL" + }, + { + "end": 63, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 56, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 59, + "start": 57, + "type": "REQUEST_EXECUTION" + }, + { + "end": 64, + "start": 60, + "type": "RESPONSE_HANDLING" + } + ], + "title": "dialogflow_v2_generated_participants_streaming_reactive_companion_suggestions_sync.py" + }, { "canonical": true, "clientMethod": { diff --git a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_answer_records.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_answer_records.py index 856c1e84661f..98b22f5c46ea 100644 --- a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_answer_records.py +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_answer_records.py @@ -66,8 +66,10 @@ from google.cloud.dialogflow_v2.types import ( agent_coaching_instruction, answer_record, + companion_agent, context, generator, + grounding, intent, participant, session, @@ -2820,6 +2822,7 @@ def test_update_answer_record_rest_call_success(request_type): "answer_copied": True, "clicked_uris": ["clicked_uris_value1", "clicked_uris_value2"], }, + "companion_feedback": {}, }, "clicked": True, "click_time": {}, @@ -3126,7 +3129,7 @@ def test_update_answer_record_rest_call_success(request_type): "ces_tool": "ces_tool_value", "ces_app": "ces_app_value", "action": "action_value", - "error": {"message": "message_value"}, + "error": {"message": "message_value", "retryable": True}, "raw_content": b"raw_content_blob", "content": "content_value", "create_time": {}, @@ -3135,6 +3138,75 @@ def test_update_answer_record_rest_call_success(request_type): } ], }, + "companion_suggestion": { + "guidances": [ + { + "suggested_reply": "suggested_reply_value", + "suggested_action": "suggested_action_value", + "instruction_source": { + "display_name": "display_name_value", + "display_details": "display_details_value", + "condition": "condition_value", + "actions": [{"description": "description_value"}], + "trigger_event": 1, + "disable_suggested_reply": True, + }, + "knowledge_sources": [ + { + "knowledge_article_url": "knowledge_article_url_value", + "knowledge_article_title": "knowledge_article_title_value", + "knowledge_snippet": "knowledge_snippet_value", + } + ], + "explanation": "explanation_value", + "grounding_metadata": { + "web_search_queries": [ + "web_search_queries_value1", + "web_search_queries_value2", + ], + "search_entry_point": { + "rendered_content": "rendered_content_value" + }, + "grounding_chunks": [ + { + "web": { + "uri": "uri_value", + "title": "title_value", + "domain": "domain_value", + }, + "retrieved_context": { + "uri": "uri_value", + "title": "title_value", + "text": "text_value", + }, + } + ], + "grounding_supports": [ + { + "segment": { + "start_index": 1189, + "end_index": 942, + "text": "text_value", + }, + "grounding_chunk_indices": [2436, 2437], + } + ], + }, + "tool_calls": [ + {"tool_call_info": {}, "text_update": "text_update_value"} + ], + "triggering_tool_call_answer_records": [ + "triggering_tool_call_answer_records_value1", + "triggering_tool_call_answer_records_value2", + ], + } + ] + }, + "reactive_companion_suggestion": { + "response": "response_value", + "grounding_metadata": {}, + "tool_calls": {}, + }, }, } # The version of a generated dependency at test runtime may differ from the version used during generation. diff --git a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_companion_agents.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_companion_agents.py new file mode 100644 index 000000000000..047b3610fa80 --- /dev/null +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_companion_agents.py @@ -0,0 +1,7349 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore +import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +from google.api_core import ( + client_options, + 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.cloud.location import locations_pb2 +from google.longrunning import operations_pb2 # type: ignore +from google.oauth2 import service_account + +from google.cloud.dialogflow_v2.services.companion_agents import ( + CompanionAgentsAsyncClient, + CompanionAgentsClient, + pagers, + transports, +) +from google.cloud.dialogflow_v2.types import ces_tool, companion_agent, tool, toolset +from google.cloud.dialogflow_v2.types import companion_agent as gcd_companion_agent + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert CompanionAgentsClient._get_client_cert_source(None, False) is None + assert ( + CompanionAgentsClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + CompanionAgentsClient._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 ( + CompanionAgentsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + CompanionAgentsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@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 = CompanionAgentsClient(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 = CompanionAgentsClient(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", + [ + (CompanionAgentsClient, "grpc"), + (CompanionAgentsAsyncClient, "grpc_asyncio"), + (CompanionAgentsClient, "rest"), + ], +) +def test_companion_agents_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 == ( + "dialogflow.googleapis.com:443" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://dialogflow.googleapis.com" + ) + + +@pytest.mark.parametrize( + "transport_class,transport_name", + [ + (transports.CompanionAgentsGrpcTransport, "grpc"), + (transports.CompanionAgentsGrpcAsyncIOTransport, "grpc_asyncio"), + (transports.CompanionAgentsRestTransport, "rest"), + ], +) +def test_companion_agents_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", + [ + (CompanionAgentsClient, "grpc"), + (CompanionAgentsAsyncClient, "grpc_asyncio"), + (CompanionAgentsClient, "rest"), + ], +) +def test_companion_agents_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 == ( + "dialogflow.googleapis.com:443" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://dialogflow.googleapis.com" + ) + + +def test_companion_agents_client_get_transport_class(): + transport = CompanionAgentsClient.get_transport_class() + available_transports = [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsRestTransport, + ] + assert transport in available_transports + + transport = CompanionAgentsClient.get_transport_class("grpc") + assert transport == transports.CompanionAgentsGrpcTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (CompanionAgentsClient, transports.CompanionAgentsGrpcTransport, "grpc"), + ( + CompanionAgentsAsyncClient, + transports.CompanionAgentsGrpcAsyncIOTransport, + "grpc_asyncio", + ), + (CompanionAgentsClient, transports.CompanionAgentsRestTransport, "rest"), + ], +) +@mock.patch.object( + CompanionAgentsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(CompanionAgentsClient), +) +@mock.patch.object( + CompanionAgentsAsyncClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(CompanionAgentsAsyncClient), +) +def test_companion_agents_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(CompanionAgentsClient, "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(CompanionAgentsClient, "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", + [ + ( + CompanionAgentsClient, + transports.CompanionAgentsGrpcTransport, + "grpc", + "true", + ), + ( + CompanionAgentsAsyncClient, + transports.CompanionAgentsGrpcAsyncIOTransport, + "grpc_asyncio", + "true", + ), + ( + CompanionAgentsClient, + transports.CompanionAgentsGrpcTransport, + "grpc", + "false", + ), + ( + CompanionAgentsAsyncClient, + transports.CompanionAgentsGrpcAsyncIOTransport, + "grpc_asyncio", + "false", + ), + ( + CompanionAgentsClient, + transports.CompanionAgentsRestTransport, + "rest", + "true", + ), + ( + CompanionAgentsClient, + transports.CompanionAgentsRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + CompanionAgentsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(CompanionAgentsClient), +) +@mock.patch.object( + CompanionAgentsAsyncClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(CompanionAgentsAsyncClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_companion_agents_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", [CompanionAgentsClient, CompanionAgentsAsyncClient] +) +@mock.patch.object( + CompanionAgentsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(CompanionAgentsClient), +) +@mock.patch.object( + CompanionAgentsAsyncClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(CompanionAgentsAsyncClient), +) +def test_companion_agents_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [CompanionAgentsClient, CompanionAgentsAsyncClient] +) +@mock.patch.object( + CompanionAgentsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(CompanionAgentsClient), +) +@mock.patch.object( + CompanionAgentsAsyncClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(CompanionAgentsAsyncClient), +) +def test_companion_agents_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = CompanionAgentsClient._DEFAULT_UNIVERSE + default_endpoint = CompanionAgentsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = CompanionAgentsClient._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", + [ + (CompanionAgentsClient, transports.CompanionAgentsGrpcTransport, "grpc"), + ( + CompanionAgentsAsyncClient, + transports.CompanionAgentsGrpcAsyncIOTransport, + "grpc_asyncio", + ), + (CompanionAgentsClient, transports.CompanionAgentsRestTransport, "rest"), + ], +) +def test_companion_agents_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", + [ + ( + CompanionAgentsClient, + transports.CompanionAgentsGrpcTransport, + "grpc", + grpc_helpers, + ), + ( + CompanionAgentsAsyncClient, + transports.CompanionAgentsGrpcAsyncIOTransport, + "grpc_asyncio", + grpc_helpers_async, + ), + (CompanionAgentsClient, transports.CompanionAgentsRestTransport, "rest", None), + ], +) +def test_companion_agents_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_companion_agents_client_client_options_from_dict(): + with mock.patch( + "google.cloud.dialogflow_v2.services.companion_agents.transports.CompanionAgentsGrpcTransport.__init__" + ) as grpc_transport: + grpc_transport.return_value = None + client = CompanionAgentsClient( + client_options={"api_endpoint": "squid.clam.whelk"} + ) + grpc_transport.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, + ) + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name,grpc_helpers", + [ + ( + CompanionAgentsClient, + transports.CompanionAgentsGrpcTransport, + "grpc", + grpc_helpers, + ), + ( + CompanionAgentsAsyncClient, + transports.CompanionAgentsGrpcAsyncIOTransport, + "grpc_asyncio", + grpc_helpers_async, + ), + ], +) +def test_companion_agents_client_create_channel_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, + ) + + # test that the credentials from file are saved and used as the credentials. + with ( + mock.patch.object( + google.auth, "load_credentials_from_file", autospec=True + ) as load_creds, + mock.patch.object(google.auth, "default", autospec=True) as adc, + mock.patch.object(grpc_helpers, "create_channel") as create_channel, + ): + creds = ga_credentials.AnonymousCredentials() + file_creds = ga_credentials.AnonymousCredentials() + load_creds.return_value = (file_creds, None) + adc.return_value = (creds, None) + client = client_class(client_options=options, transport=transport_name) + create_channel.assert_called_with( + "dialogflow.googleapis.com:443", + credentials=file_creds, + credentials_file=None, + quota_project_id=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + scopes=None, + default_host="dialogflow.googleapis.com", + ssl_credentials=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + +@pytest.mark.parametrize( + "request_type", + [ + gcd_companion_agent.CreateCompanionAgentRequest(), + {}, + ], +) +def test_create_companion_agent(request_type, transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + response = client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = gcd_companion_agent.CreateCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, gcd_companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +def test_create_companion_agent_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = gcd_companion_agent.CreateCompanionAgentRequest( + parent="parent_value", + companion_agent_id="companion_agent_id_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.create_companion_agent(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.CreateCompanionAgentRequest( + parent="parent_value", + companion_agent_id="companion_agent_id_value", + ) + assert args[0] == request_msg + + +def test_create_companion_agent_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 = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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.create_companion_agent + 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_companion_agent] = ( + mock_rpc + ) + request = {} + client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.create_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_create_companion_agent_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.create_companion_agent + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.create_companion_agent + ] = mock_rpc + + request = {} + await client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.create_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + gcd_companion_agent.CreateCompanionAgentRequest(), + {}, + ], +) +async def test_create_companion_agent_async( + request_type, transport: str = "grpc_asyncio" +): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + ) + response = await client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = gcd_companion_agent.CreateCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, gcd_companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +def test_create_companion_agent_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_companion_agent.CreateCompanionAgentRequest() + + request.parent = "parent_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + call.return_value = gcd_companion_agent.CompanionAgent() + client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "parent=parent_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_create_companion_agent_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_companion_agent.CreateCompanionAgentRequest() + + request.parent = "parent_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent() + ) + await client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "parent=parent_value", + ) in kw["metadata"] + + +def test_create_companion_agent_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = gcd_companion_agent.CompanionAgent() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.create_companion_agent( + parent="parent_value", + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + companion_agent_id="companion_agent_id_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].companion_agent + mock_val = gcd_companion_agent.CompanionAgent(name="name_value") + assert arg == mock_val + arg = args[0].companion_agent_id + mock_val = "companion_agent_id_value" + assert arg == mock_val + + +def test_create_companion_agent_flattened_error(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.create_companion_agent( + gcd_companion_agent.CreateCompanionAgentRequest(), + parent="parent_value", + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + companion_agent_id="companion_agent_id_value", + ) + + +@pytest.mark.asyncio +async def test_create_companion_agent_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = gcd_companion_agent.CompanionAgent() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.create_companion_agent( + parent="parent_value", + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + companion_agent_id="companion_agent_id_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + arg = args[0].companion_agent + mock_val = gcd_companion_agent.CompanionAgent(name="name_value") + assert arg == mock_val + arg = args[0].companion_agent_id + mock_val = "companion_agent_id_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_create_companion_agent_flattened_error_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.create_companion_agent( + gcd_companion_agent.CreateCompanionAgentRequest(), + parent="parent_value", + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + companion_agent_id="companion_agent_id_value", + ) + + +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.GetCompanionAgentRequest(), + {}, + ], +) +def test_get_companion_agent(request_type, transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + response = client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = companion_agent.GetCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +def test_get_companion_agent_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = companion_agent.GetCompanionAgentRequest( + name="name_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.get_companion_agent(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.GetCompanionAgentRequest( + name="name_value", + ) + assert args[0] == request_msg + + +def test_get_companion_agent_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 = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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_companion_agent 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_companion_agent] = ( + mock_rpc + ) + request = {} + client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_get_companion_agent_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.get_companion_agent + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.get_companion_agent + ] = mock_rpc + + request = {} + await client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.get_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.GetCompanionAgentRequest(), + {}, + ], +) +async def test_get_companion_agent_async(request_type, transport: str = "grpc_asyncio"): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + ) + response = await client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = companion_agent.GetCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +def test_get_companion_agent_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = companion_agent.GetCompanionAgentRequest() + + request.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + call.return_value = companion_agent.CompanionAgent() + client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=name_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_get_companion_agent_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = companion_agent.GetCompanionAgentRequest() + + request.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.CompanionAgent() + ) + await client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=name_value", + ) in kw["metadata"] + + +def test_get_companion_agent_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = companion_agent.CompanionAgent() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.get_companion_agent( + name="name_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_get_companion_agent_flattened_error(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.get_companion_agent( + companion_agent.GetCompanionAgentRequest(), + name="name_value", + ) + + +@pytest.mark.asyncio +async def test_get_companion_agent_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = companion_agent.CompanionAgent() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.CompanionAgent() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.get_companion_agent( + name="name_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_get_companion_agent_flattened_error_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.get_companion_agent( + companion_agent.GetCompanionAgentRequest(), + name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", + [ + gcd_companion_agent.UpdateCompanionAgentRequest(), + {}, + ], +) +def test_update_companion_agent(request_type, transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + response = client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = gcd_companion_agent.UpdateCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, gcd_companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +def test_update_companion_agent_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = gcd_companion_agent.UpdateCompanionAgentRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.update_companion_agent(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.UpdateCompanionAgentRequest() + assert args[0] == request_msg + + +def test_update_companion_agent_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 = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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_companion_agent + 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_companion_agent] = ( + mock_rpc + ) + request = {} + client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.update_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_update_companion_agent_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.update_companion_agent + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.update_companion_agent + ] = mock_rpc + + request = {} + await client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.update_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + gcd_companion_agent.UpdateCompanionAgentRequest(), + {}, + ], +) +async def test_update_companion_agent_async( + request_type, transport: str = "grpc_asyncio" +): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + ) + response = await client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = gcd_companion_agent.UpdateCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, gcd_companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +def test_update_companion_agent_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_companion_agent.UpdateCompanionAgentRequest() + + request.companion_agent.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + call.return_value = gcd_companion_agent.CompanionAgent() + client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "companion_agent.name=name_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_update_companion_agent_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = gcd_companion_agent.UpdateCompanionAgentRequest() + + request.companion_agent.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent() + ) + await client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "companion_agent.name=name_value", + ) in kw["metadata"] + + +def test_update_companion_agent_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = gcd_companion_agent.CompanionAgent() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.update_companion_agent( + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].companion_agent + mock_val = gcd_companion_agent.CompanionAgent(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val + + +def test_update_companion_agent_flattened_error(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.update_companion_agent( + gcd_companion_agent.UpdateCompanionAgentRequest(), + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + +@pytest.mark.asyncio +async def test_update_companion_agent_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = gcd_companion_agent.CompanionAgent() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.update_companion_agent( + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].companion_agent + mock_val = gcd_companion_agent.CompanionAgent(name="name_value") + assert arg == mock_val + arg = args[0].update_mask + mock_val = field_mask_pb2.FieldMask(paths=["paths_value"]) + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_update_companion_agent_flattened_error_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.update_companion_agent( + gcd_companion_agent.UpdateCompanionAgentRequest(), + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.DeleteCompanionAgentRequest(), + {}, + ], +) +def test_delete_companion_agent(request_type, transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = None + response = client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = companion_agent.DeleteCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert response is None + + +def test_delete_companion_agent_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = companion_agent.DeleteCompanionAgentRequest( + name="name_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.delete_companion_agent(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.DeleteCompanionAgentRequest( + name="name_value", + ) + assert args[0] == request_msg + + +def test_delete_companion_agent_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 = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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_companion_agent + 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_companion_agent] = ( + mock_rpc + ) + request = {} + client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.delete_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_delete_companion_agent_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.delete_companion_agent + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.delete_companion_agent + ] = mock_rpc + + request = {} + await client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.delete_companion_agent(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.DeleteCompanionAgentRequest(), + {}, + ], +) +async def test_delete_companion_agent_async( + request_type, transport: str = "grpc_asyncio" +): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + response = await client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = companion_agent.DeleteCompanionAgentRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert response is None + + +def test_delete_companion_agent_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = companion_agent.DeleteCompanionAgentRequest() + + request.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + call.return_value = None + client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=name_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_delete_companion_agent_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = companion_agent.DeleteCompanionAgentRequest() + + request.name = "name_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + await client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=name_value", + ) in kw["metadata"] + + +def test_delete_companion_agent_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = None + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.delete_companion_agent( + name="name_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +def test_delete_companion_agent_flattened_error(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.delete_companion_agent( + companion_agent.DeleteCompanionAgentRequest(), + name="name_value", + ) + + +@pytest.mark.asyncio +async def test_delete_companion_agent_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = None + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.delete_companion_agent( + name="name_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].name + mock_val = "name_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_delete_companion_agent_flattened_error_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.delete_companion_agent( + companion_agent.DeleteCompanionAgentRequest(), + name="name_value", + ) + + +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.ListCompanionAgentsRequest(), + {}, + ], +) +def test_list_companion_agents(request_type, transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = companion_agent.ListCompanionAgentsResponse( + next_page_token="next_page_token_value", + ) + response = client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + request = companion_agent.ListCompanionAgentsRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListCompanionAgentsPager) + assert response.next_page_token == "next_page_token_value" + + +def test_list_companion_agents_non_empty_request_with_auto_populated_field(): + # This test is a coverage failsafe to make sure that UUID4 fields are + # automatically populated, according to AIP-4235, with non-empty requests. + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Populate all string fields in the request which are not UUID4 + # since we want to check that UUID4 are populated automatically + # if they meet the requirements of AIP 4235. + request = companion_agent.ListCompanionAgentsRequest( + parent="parent_value", + page_token="page_token_value", + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + call.return_value.name = ( + "foo" # operation_request.operation in compute client(s) expect a string. + ) + client.list_companion_agents(request=request) + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.ListCompanionAgentsRequest( + parent="parent_value", + page_token="page_token_value", + ) + assert args[0] == request_msg + + +def test_list_companion_agents_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 = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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_companion_agents + 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_companion_agents] = ( + mock_rpc + ) + request = {} + client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list_companion_agents(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_list_companion_agents_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.list_companion_agents + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.list_companion_agents + ] = mock_rpc + + request = {} + await client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.list_companion_agents(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.ListCompanionAgentsRequest(), + {}, + ], +) +async def test_list_companion_agents_async( + request_type, transport: str = "grpc_asyncio" +): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.ListCompanionAgentsResponse( + next_page_token="next_page_token_value", + ) + ) + response = await client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + request = companion_agent.ListCompanionAgentsRequest() + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListCompanionAgentsAsyncPager) + assert response.next_page_token == "next_page_token_value" + + +def test_list_companion_agents_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = companion_agent.ListCompanionAgentsRequest() + + request.parent = "parent_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + call.return_value = companion_agent.ListCompanionAgentsResponse() + client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "parent=parent_value", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_list_companion_agents_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = companion_agent.ListCompanionAgentsRequest() + + request.parent = "parent_value" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.ListCompanionAgentsResponse() + ) + await client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "parent=parent_value", + ) in kw["metadata"] + + +def test_list_companion_agents_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = companion_agent.ListCompanionAgentsResponse() + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + client.list_companion_agents( + parent="parent_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +def test_list_companion_agents_flattened_error(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + client.list_companion_agents( + companion_agent.ListCompanionAgentsRequest(), + parent="parent_value", + ) + + +@pytest.mark.asyncio +async def test_list_companion_agents_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = companion_agent.ListCompanionAgentsResponse() + + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.ListCompanionAgentsResponse() + ) + # Call the method with a truthy value for each flattened field, + # using the keyword arguments to the method. + response = await client.list_companion_agents( + parent="parent_value", + ) + + # Establish that the underlying call was made with the expected + # request object values. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + arg = args[0].parent + mock_val = "parent_value" + assert arg == mock_val + + +@pytest.mark.asyncio +async def test_list_companion_agents_flattened_error_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Attempting to call a method with both a request object and flattened + # fields is an error. + with pytest.raises(ValueError): + await client.list_companion_agents( + companion_agent.ListCompanionAgentsRequest(), + parent="parent_value", + ) + + +def test_list_companion_agents_pager(transport_name: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + next_page_token="abc", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[], + next_page_token="def", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + ], + next_page_token="ghi", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + ), + RuntimeError, + ) + + expected_metadata = () + retry = retries.Retry() + timeout = 5 + expected_metadata = tuple(expected_metadata) + ( + gapic_v1.routing_header.to_grpc_metadata((("parent", ""),)), + ) + pager = client.list_companion_agents(request={}, retry=retry, timeout=timeout) + + assert pager._metadata == expected_metadata + assert pager._retry == retry + assert pager._timeout == timeout + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, companion_agent.CompanionAgent) for i in results) + + +def test_list_companion_agents_pages(transport_name: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport_name, + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + next_page_token="abc", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[], + next_page_token="def", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + ], + next_page_token="ghi", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + ), + RuntimeError, + ) + pages = list(client.list_companion_agents(request={}).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +@pytest.mark.asyncio +async def test_list_companion_agents_async_pager(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + next_page_token="abc", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[], + next_page_token="def", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + ], + next_page_token="ghi", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + ), + RuntimeError, + ) + async_pager = await client.list_companion_agents( + request={}, + ) + assert async_pager.next_page_token == "abc" + assert str(async_pager).startswith(f"{async_pager.__class__.__name__}<") + + responses = [] + async for response in async_pager: # pragma: no branch + responses.append(response) + + assert len(responses) == 6 + assert all(isinstance(i, companion_agent.CompanionAgent) for i in responses) + + +@pytest.mark.asyncio +async def test_list_companion_agents_async_pages(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), + "__call__", + new_callable=mock.AsyncMock, + ) as call: + # Set the response to a series of pages. + call.side_effect = ( + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + next_page_token="abc", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[], + next_page_token="def", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + ], + next_page_token="ghi", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + ), + RuntimeError, + ) + pages = [] + async for page_ in (await client.list_companion_agents(request={})).pages: + pages.append(page_) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_create_companion_agent_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 = CompanionAgentsClient( + 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.create_companion_agent + 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_companion_agent] = ( + mock_rpc + ) + + request = {} + client.create_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.create_companion_agent(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_companion_agent_rest_required_fields( + request_type=gcd_companion_agent.CreateCompanionAgentRequest, +): + transport_class = transports.CompanionAgentsRestTransport + + request_init = {} + request_init["parent"] = "" + 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 + + default_values = getattr( + transport_class._BaseCreateCompanionAgent, + "_BaseCreateCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["parent"] = "parent_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("companionAgentId",)) + + # verify required fields with non-default values are left alone + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" + + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = gcd_companion_agent.CompanionAgent() + # 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 = gcd_companion_agent.CompanionAgent.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.create_companion_agent(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_create_companion_agent_rest_flattened(): + client = CompanionAgentsClient( + 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 = gcd_companion_agent.CompanionAgent() + + # get arguments that satisfy an http rule for this method + sample_request = {"parent": "projects/sample1/locations/sample2"} + + # get truthy value for each flattened field + mock_args = dict( + parent="parent_value", + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + companion_agent_id="companion_agent_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 = gcd_companion_agent.CompanionAgent.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.create_companion_agent(**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/v2/{parent=projects/*/locations/*}/companionAgents" + % client.transport._host, + args[1], + ) + + +def test_create_companion_agent_rest_flattened_error(transport: str = "rest"): + client = CompanionAgentsClient( + 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.create_companion_agent( + gcd_companion_agent.CreateCompanionAgentRequest(), + parent="parent_value", + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + companion_agent_id="companion_agent_id_value", + ) + + +def test_get_companion_agent_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 = CompanionAgentsClient( + 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_companion_agent 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_companion_agent] = ( + mock_rpc + ) + + request = {} + client.get_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.get_companion_agent(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_companion_agent_rest_required_fields( + request_type=companion_agent.GetCompanionAgentRequest, +): + transport_class = transports.CompanionAgentsRestTransport + + request_init = {} + request_init["name"] = "" + 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 + + default_values = getattr( + transport_class._BaseGetCompanionAgent, + "_BaseGetCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["name"] = "name_value" + + # verify required fields with non-default values are left alone + assert "name" in jsonified_request + assert jsonified_request["name"] == "name_value" + + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = companion_agent.CompanionAgent() + # 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 = companion_agent.CompanionAgent.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_companion_agent(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_get_companion_agent_rest_flattened(): + client = CompanionAgentsClient( + 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 = companion_agent.CompanionAgent() + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/companionAgents/sample3" + } + + # get truthy value for each flattened field + mock_args = dict( + name="name_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 = companion_agent.CompanionAgent.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_companion_agent(**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/v2/{name=projects/*/locations/*/companionAgents/*}" + % client.transport._host, + args[1], + ) + + +def test_get_companion_agent_rest_flattened_error(transport: str = "rest"): + client = CompanionAgentsClient( + 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_companion_agent( + companion_agent.GetCompanionAgentRequest(), + name="name_value", + ) + + +def test_update_companion_agent_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 = CompanionAgentsClient( + 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_companion_agent + 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_companion_agent] = ( + mock_rpc + ) + + request = {} + client.update_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.update_companion_agent(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_companion_agent_rest_required_fields( + request_type=gcd_companion_agent.UpdateCompanionAgentRequest, +): + transport_class = transports.CompanionAgentsRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseUpdateCompanionAgent, + "_BaseUpdateCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("updateMask",)) + + # verify required fields with non-default values are left alone + + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = gcd_companion_agent.CompanionAgent() + # 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": "patch", + "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 = gcd_companion_agent.CompanionAgent.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_companion_agent(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_update_companion_agent_rest_flattened(): + client = CompanionAgentsClient( + 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 = gcd_companion_agent.CompanionAgent() + + # get arguments that satisfy an http rule for this method + sample_request = { + "companion_agent": { + "name": "projects/sample1/locations/sample2/companionAgents/sample3" + } + } + + # get truthy value for each flattened field + mock_args = dict( + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_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 = gcd_companion_agent.CompanionAgent.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_companion_agent(**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/v2/{companion_agent.name=projects/*/locations/*/companionAgents/*}" + % client.transport._host, + args[1], + ) + + +def test_update_companion_agent_rest_flattened_error(transport: str = "rest"): + client = CompanionAgentsClient( + 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_companion_agent( + gcd_companion_agent.UpdateCompanionAgentRequest(), + companion_agent=gcd_companion_agent.CompanionAgent(name="name_value"), + update_mask=field_mask_pb2.FieldMask(paths=["paths_value"]), + ) + + +def test_delete_companion_agent_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 = CompanionAgentsClient( + 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_companion_agent + 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_companion_agent] = ( + mock_rpc + ) + + request = {} + client.delete_companion_agent(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.delete_companion_agent(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_companion_agent_rest_required_fields( + request_type=companion_agent.DeleteCompanionAgentRequest, +): + transport_class = transports.CompanionAgentsRestTransport + + request_init = {} + request_init["name"] = "" + 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 + + default_values = getattr( + transport_class._BaseDeleteCompanionAgent, + "_BaseDeleteCompanionAgent__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["name"] = "name_value" + + # verify required fields with non-default values are left alone + assert "name" in jsonified_request + assert jsonified_request["name"] == "name_value" + + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = None + # 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 + json_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_companion_agent(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_delete_companion_agent_rest_flattened(): + client = CompanionAgentsClient( + 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 = None + + # get arguments that satisfy an http rule for this method + sample_request = { + "name": "projects/sample1/locations/sample2/companionAgents/sample3" + } + + # get truthy value for each flattened field + mock_args = dict( + name="name_value", + ) + mock_args.update(sample_request) + + # Wrap the value into a proper Response obj + response_value = Response() + response_value.status_code = 200 + json_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_companion_agent(**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/v2/{name=projects/*/locations/*/companionAgents/*}" + % client.transport._host, + args[1], + ) + + +def test_delete_companion_agent_rest_flattened_error(transport: str = "rest"): + client = CompanionAgentsClient( + 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_companion_agent( + companion_agent.DeleteCompanionAgentRequest(), + name="name_value", + ) + + +def test_list_companion_agents_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 = CompanionAgentsClient( + 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_companion_agents + 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_companion_agents] = ( + mock_rpc + ) + + request = {} + client.list_companion_agents(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.list_companion_agents(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_companion_agents_rest_required_fields( + request_type=companion_agent.ListCompanionAgentsRequest, +): + transport_class = transports.CompanionAgentsRestTransport + + request_init = {} + request_init["parent"] = "" + 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 + + default_values = getattr( + transport_class._BaseListCompanionAgents, + "_BaseListCompanionAgents__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["parent"] = "parent_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "pageSize", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "parent" in jsonified_request + assert jsonified_request["parent"] == "parent_value" + + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = companion_agent.ListCompanionAgentsResponse() + # 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 = companion_agent.ListCompanionAgentsResponse.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_companion_agents(request) + + expected_params = [("$alt", "json;enum-encoding=int")] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_list_companion_agents_rest_flattened(): + client = CompanionAgentsClient( + 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 = companion_agent.ListCompanionAgentsResponse() + + # get arguments that satisfy an http rule for this method + sample_request = {"parent": "projects/sample1/locations/sample2"} + + # get truthy value for each flattened field + mock_args = dict( + parent="parent_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 = companion_agent.ListCompanionAgentsResponse.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_companion_agents(**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/v2/{parent=projects/*/locations/*}/companionAgents" + % client.transport._host, + args[1], + ) + + +def test_list_companion_agents_rest_flattened_error(transport: str = "rest"): + client = CompanionAgentsClient( + 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_companion_agents( + companion_agent.ListCompanionAgentsRequest(), + parent="parent_value", + ) + + +def test_list_companion_agents_rest_pager(transport: str = "rest"): + client = CompanionAgentsClient( + 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 = ( + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + next_page_token="abc", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[], + next_page_token="def", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + ], + next_page_token="ghi", + ), + companion_agent.ListCompanionAgentsResponse( + companion_agents=[ + companion_agent.CompanionAgent(), + companion_agent.CompanionAgent(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + companion_agent.ListCompanionAgentsResponse.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 = {"parent": "projects/sample1/locations/sample2"} + + pager = client.list_companion_agents(request=sample_request) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, companion_agent.CompanionAgent) for i in results) + + pages = list(client.list_companion_agents(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.CompanionAgentsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.CompanionAgentsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = CompanionAgentsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.CompanionAgentsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = CompanionAgentsClient( + 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 = CompanionAgentsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.CompanionAgentsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = CompanionAgentsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.CompanionAgentsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = CompanionAgentsClient(transport=transport) + assert client.transport is transport + + +def test_transport_get_channel(): + # A client may be instantiated with a custom transport instance. + transport = transports.CompanionAgentsGrpcTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + transport = transports.CompanionAgentsGrpcAsyncIOTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + channel = transport.grpc_channel + assert channel + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsGrpcAsyncIOTransport, + transports.CompanionAgentsRestTransport, + ], +) +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_grpc(): + transport = CompanionAgentsClient.get_transport_class("grpc")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "grpc" + + +def test_initialize_client_w_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc" + ) + 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_create_companion_agent_empty_call_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + call.return_value = gcd_companion_agent.CompanionAgent() + client.create_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.CreateCompanionAgentRequest() + 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_companion_agent_empty_call_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + call.return_value = companion_agent.CompanionAgent() + client.get_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.GetCompanionAgentRequest() + 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_companion_agent_empty_call_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + call.return_value = gcd_companion_agent.CompanionAgent() + client.update_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.UpdateCompanionAgentRequest() + 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_companion_agent_empty_call_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + call.return_value = None + client.delete_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.DeleteCompanionAgentRequest() + 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_companion_agents_empty_call_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + call.return_value = companion_agent.ListCompanionAgentsResponse() + client.list_companion_agents(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.ListCompanionAgentsRequest() + assert args[0] == request_msg + + +def test_transport_kind_grpc_asyncio(): + transport = CompanionAgentsAsyncClient.get_transport_class("grpc_asyncio")( + credentials=async_anonymous_credentials() + ) + assert transport.kind == "grpc_asyncio" + + +def test_initialize_client_w_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), transport="grpc_asyncio" + ) + 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. +@pytest.mark.asyncio +async def test_create_companion_agent_empty_call_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + ) + await client.create_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.CreateCompanionAgentRequest() + 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. +@pytest.mark.asyncio +async def test_get_companion_agent_empty_call_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + ) + await client.get_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.GetCompanionAgentRequest() + 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. +@pytest.mark.asyncio +async def test_update_companion_agent_empty_call_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_value", + ) + ) + await client.update_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.UpdateCompanionAgentRequest() + 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. +@pytest.mark.asyncio +async def test_delete_companion_agent_empty_call_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + await client.delete_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.DeleteCompanionAgentRequest() + 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. +@pytest.mark.asyncio +async def test_list_companion_agents_empty_call_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport="grpc_asyncio", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + companion_agent.ListCompanionAgentsResponse( + next_page_token="next_page_token_value", + ) + ) + await client.list_companion_agents(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.ListCompanionAgentsRequest() + assert args[0] == request_msg + + +def test_transport_kind_rest(): + transport = CompanionAgentsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_create_companion_agent_rest_bad_request( + request_type=gcd_companion_agent.CreateCompanionAgentRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"parent": "projects/sample1/locations/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.create_companion_agent(request) + + +@pytest.mark.parametrize( + "request_type", + [ + gcd_companion_agent.CreateCompanionAgentRequest, + dict, + ], +) +def test_create_companion_agent_rest_call_success(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"parent": "projects/sample1/locations/sample2"} + request_init["companion_agent"] = { + "name": "name_value", + "create_time": {"seconds": 751, "nanos": 543}, + "update_time": {}, + "toolset_tools": [ + { + "toolset": "toolset_value", + "operation_id": "operation_id_value", + "confirmation_requirement": 1, + } + ], + "ces_tool_specs": [ + {"ces_tool": "ces_tool_value", "confirmation_requirement": 1} + ], + "display_name": "display_name_value", + "description": "description_value", + "skill_configs": [ + { + "guidance_skill_config": { + "guidance_instructions": [ + { + "display_name": "display_name_value", + "display_details": "display_details_value", + "condition": "condition_value", + "actions": [{"description": "description_value"}], + "trigger_event": 1, + "disable_suggested_reply": True, + } + ], + "overarching_guidance": "overarching_guidance_value", + "knowledge_source": {}, + }, + "translation_skill_config": { + "agent_language_code": "agent_language_code_value", + "customer_language_code": "customer_language_code_value", + }, + "skill_triggering_event": 1, + } + ], + } + # 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 = gcd_companion_agent.CreateCompanionAgentRequest.meta.fields[ + "companion_agent" + ] + + 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["companion_agent"].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["companion_agent"][field])): + del request_init["companion_agent"][field][i][subfield] + else: + del request_init["companion_agent"][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 = gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_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 = gcd_companion_agent.CompanionAgent.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.create_companion_agent(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, gcd_companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_create_companion_agent_rest_interceptors(null_interceptor): + transport = transports.CompanionAgentsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CompanionAgentsRestInterceptor(), + ) + client = CompanionAgentsClient(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.CompanionAgentsRestInterceptor, "post_create_companion_agent" + ) as post, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, + "post_create_companion_agent_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, "pre_create_companion_agent" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = gcd_companion_agent.CreateCompanionAgentRequest.pb( + gcd_companion_agent.CreateCompanionAgentRequest() + ) + 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 = gcd_companion_agent.CompanionAgent.to_json( + gcd_companion_agent.CompanionAgent() + ) + req.return_value.content = return_value + + request = gcd_companion_agent.CreateCompanionAgentRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = gcd_companion_agent.CompanionAgent() + post_with_metadata.return_value = gcd_companion_agent.CompanionAgent(), metadata + + client.create_companion_agent( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_companion_agent_rest_bad_request( + request_type=companion_agent.GetCompanionAgentRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/companionAgents/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_companion_agent(request) + + +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.GetCompanionAgentRequest, + dict, + ], +) +def test_get_companion_agent_rest_call_success(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/companionAgents/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 = companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_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 = companion_agent.CompanionAgent.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_companion_agent(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_companion_agent_rest_interceptors(null_interceptor): + transport = transports.CompanionAgentsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CompanionAgentsRestInterceptor(), + ) + client = CompanionAgentsClient(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.CompanionAgentsRestInterceptor, "post_get_companion_agent" + ) as post, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, + "post_get_companion_agent_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, "pre_get_companion_agent" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = companion_agent.GetCompanionAgentRequest.pb( + companion_agent.GetCompanionAgentRequest() + ) + 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 = companion_agent.CompanionAgent.to_json( + companion_agent.CompanionAgent() + ) + req.return_value.content = return_value + + request = companion_agent.GetCompanionAgentRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = companion_agent.CompanionAgent() + post_with_metadata.return_value = companion_agent.CompanionAgent(), metadata + + client.get_companion_agent( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_update_companion_agent_rest_bad_request( + request_type=gcd_companion_agent.UpdateCompanionAgentRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "companion_agent": { + "name": "projects/sample1/locations/sample2/companionAgents/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.update_companion_agent(request) + + +@pytest.mark.parametrize( + "request_type", + [ + gcd_companion_agent.UpdateCompanionAgentRequest, + dict, + ], +) +def test_update_companion_agent_rest_call_success(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "companion_agent": { + "name": "projects/sample1/locations/sample2/companionAgents/sample3" + } + } + request_init["companion_agent"] = { + "name": "projects/sample1/locations/sample2/companionAgents/sample3", + "create_time": {"seconds": 751, "nanos": 543}, + "update_time": {}, + "toolset_tools": [ + { + "toolset": "toolset_value", + "operation_id": "operation_id_value", + "confirmation_requirement": 1, + } + ], + "ces_tool_specs": [ + {"ces_tool": "ces_tool_value", "confirmation_requirement": 1} + ], + "display_name": "display_name_value", + "description": "description_value", + "skill_configs": [ + { + "guidance_skill_config": { + "guidance_instructions": [ + { + "display_name": "display_name_value", + "display_details": "display_details_value", + "condition": "condition_value", + "actions": [{"description": "description_value"}], + "trigger_event": 1, + "disable_suggested_reply": True, + } + ], + "overarching_guidance": "overarching_guidance_value", + "knowledge_source": {}, + }, + "translation_skill_config": { + "agent_language_code": "agent_language_code_value", + "customer_language_code": "customer_language_code_value", + }, + "skill_triggering_event": 1, + } + ], + } + # 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 = gcd_companion_agent.UpdateCompanionAgentRequest.meta.fields[ + "companion_agent" + ] + + 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["companion_agent"].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["companion_agent"][field])): + del request_init["companion_agent"][field][i][subfield] + else: + del request_init["companion_agent"][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 = gcd_companion_agent.CompanionAgent( + name="name_value", + display_name="display_name_value", + description="description_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 = gcd_companion_agent.CompanionAgent.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_companion_agent(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, gcd_companion_agent.CompanionAgent) + assert response.name == "name_value" + assert response.display_name == "display_name_value" + assert response.description == "description_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_update_companion_agent_rest_interceptors(null_interceptor): + transport = transports.CompanionAgentsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CompanionAgentsRestInterceptor(), + ) + client = CompanionAgentsClient(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.CompanionAgentsRestInterceptor, "post_update_companion_agent" + ) as post, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, + "post_update_companion_agent_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, "pre_update_companion_agent" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = gcd_companion_agent.UpdateCompanionAgentRequest.pb( + gcd_companion_agent.UpdateCompanionAgentRequest() + ) + 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 = gcd_companion_agent.CompanionAgent.to_json( + gcd_companion_agent.CompanionAgent() + ) + req.return_value.content = return_value + + request = gcd_companion_agent.UpdateCompanionAgentRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = gcd_companion_agent.CompanionAgent() + post_with_metadata.return_value = gcd_companion_agent.CompanionAgent(), metadata + + client.update_companion_agent( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_delete_companion_agent_rest_bad_request( + request_type=companion_agent.DeleteCompanionAgentRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/companionAgents/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_companion_agent(request) + + +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.DeleteCompanionAgentRequest, + dict, + ], +) +def test_delete_companion_agent_rest_call_success(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "name": "projects/sample1/locations/sample2/companionAgents/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 = None + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + json_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_companion_agent(request) + + # Establish that the response is the type that we expect. + assert response is None + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_delete_companion_agent_rest_interceptors(null_interceptor): + transport = transports.CompanionAgentsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CompanionAgentsRestInterceptor(), + ) + client = CompanionAgentsClient(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.CompanionAgentsRestInterceptor, "pre_delete_companion_agent" + ) as pre, + ): + pre.assert_not_called() + pb_message = companion_agent.DeleteCompanionAgentRequest.pb( + companion_agent.DeleteCompanionAgentRequest() + ) + 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"} + + request = companion_agent.DeleteCompanionAgentRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + + client.delete_companion_agent( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + + +def test_list_companion_agents_rest_bad_request( + request_type=companion_agent.ListCompanionAgentsRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"parent": "projects/sample1/locations/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.list_companion_agents(request) + + +@pytest.mark.parametrize( + "request_type", + [ + companion_agent.ListCompanionAgentsRequest, + dict, + ], +) +def test_list_companion_agents_rest_call_success(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"parent": "projects/sample1/locations/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 = companion_agent.ListCompanionAgentsResponse( + next_page_token="next_page_token_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 = companion_agent.ListCompanionAgentsResponse.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_companion_agents(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.ListCompanionAgentsPager) + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_companion_agents_rest_interceptors(null_interceptor): + transport = transports.CompanionAgentsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.CompanionAgentsRestInterceptor(), + ) + client = CompanionAgentsClient(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.CompanionAgentsRestInterceptor, "post_list_companion_agents" + ) as post, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, + "post_list_companion_agents_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.CompanionAgentsRestInterceptor, "pre_list_companion_agents" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = companion_agent.ListCompanionAgentsRequest.pb( + companion_agent.ListCompanionAgentsRequest() + ) + 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 = companion_agent.ListCompanionAgentsResponse.to_json( + companion_agent.ListCompanionAgentsResponse() + ) + req.return_value.content = return_value + + request = companion_agent.ListCompanionAgentsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = companion_agent.ListCompanionAgentsResponse() + post_with_metadata.return_value = ( + companion_agent.ListCompanionAgentsResponse(), + metadata, + ) + + client.list_companion_agents( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_get_location_rest_bad_request(request_type=locations_pb2.GetLocationRequest): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type() + request = json_format.ParseDict( + {"name": "projects/sample1/locations/sample2"}, request + ) + + # 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 = Response() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = Request() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.get_location(request) + + +@pytest.mark.parametrize( + "request_type", + [ + locations_pb2.GetLocationRequest, + dict, + ], +) +def test_get_location_rest(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + request_init = {"name": "projects/sample1/locations/sample2"} + request = request_type(**request_init) + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # Designate an appropriate value for the returned response. + return_value = locations_pb2.Location() + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + 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_location(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, locations_pb2.Location) + + +def test_list_locations_rest_bad_request( + request_type=locations_pb2.ListLocationsRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type() + request = json_format.ParseDict({"name": "projects/sample1"}, request) + + # 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 = Response() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = Request() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.list_locations(request) + + +@pytest.mark.parametrize( + "request_type", + [ + locations_pb2.ListLocationsRequest, + dict, + ], +) +def test_list_locations_rest(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + request_init = {"name": "projects/sample1"} + request = request_type(**request_init) + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # Designate an appropriate value for the returned response. + return_value = locations_pb2.ListLocationsResponse() + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + 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_locations(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, locations_pb2.ListLocationsResponse) + + +def test_cancel_operation_rest_bad_request( + request_type=operations_pb2.CancelOperationRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type() + request = json_format.ParseDict( + {"name": "projects/sample1/operations/sample2"}, request + ) + + # 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 = Response() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = Request() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.cancel_operation(request) + + +@pytest.mark.parametrize( + "request_type", + [ + operations_pb2.CancelOperationRequest, + dict, + ], +) +def test_cancel_operation_rest(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + request_init = {"name": "projects/sample1/operations/sample2"} + request = request_type(**request_init) + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # Designate an appropriate value for the returned response. + return_value = None + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + json_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.cancel_operation(request) + + # Establish that the response is the type that we expect. + assert response is None + + +def test_get_operation_rest_bad_request( + request_type=operations_pb2.GetOperationRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type() + request = json_format.ParseDict( + {"name": "projects/sample1/operations/sample2"}, request + ) + + # 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 = Response() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = Request() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.get_operation(request) + + +@pytest.mark.parametrize( + "request_type", + [ + operations_pb2.GetOperationRequest, + dict, + ], +) +def test_get_operation_rest(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + request_init = {"name": "projects/sample1/operations/sample2"} + request = request_type(**request_init) + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # Designate an appropriate value for the returned response. + return_value = operations_pb2.Operation() + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + 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_operation(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, operations_pb2.Operation) + + +def test_list_operations_rest_bad_request( + request_type=operations_pb2.ListOperationsRequest, +): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type() + request = json_format.ParseDict({"name": "projects/sample1"}, request) + + # 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 = Response() + json_return_value = "" + response_value.json = mock.Mock(return_value={}) + response_value.status_code = 400 + response_value.request = Request() + req.return_value = response_value + req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} + client.list_operations(request) + + +@pytest.mark.parametrize( + "request_type", + [ + operations_pb2.ListOperationsRequest, + dict, + ], +) +def test_list_operations_rest(request_type): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + request_init = {"name": "projects/sample1"} + request = request_type(**request_init) + # Mock the http request call within the method and fake a response. + with mock.patch.object(Session, "request") as req: + # Designate an appropriate value for the returned response. + return_value = operations_pb2.ListOperationsResponse() + + # Wrap the value into a proper Response obj + response_value = mock.Mock() + response_value.status_code = 200 + 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_operations(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, operations_pb2.ListOperationsResponse) + + +def test_initialize_client_w_rest(): + client = CompanionAgentsClient( + 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_create_companion_agent_empty_call_rest(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.create_companion_agent), "__call__" + ) as call: + client.create_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.CreateCompanionAgentRequest() + 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_companion_agent_empty_call_rest(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.get_companion_agent), "__call__" + ) as call: + client.get_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.GetCompanionAgentRequest() + 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_companion_agent_empty_call_rest(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.update_companion_agent), "__call__" + ) as call: + client.update_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = gcd_companion_agent.UpdateCompanionAgentRequest() + 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_companion_agent_empty_call_rest(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.delete_companion_agent), "__call__" + ) as call: + client.delete_companion_agent(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.DeleteCompanionAgentRequest() + 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_companion_agents_empty_call_rest(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.list_companion_agents), "__call__" + ) as call: + client.list_companion_agents(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = companion_agent.ListCompanionAgentsRequest() + assert args[0] == request_msg + + +def test_transport_grpc_default(): + # A client should use the gRPC transport by default. + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + assert isinstance( + client.transport, + transports.CompanionAgentsGrpcTransport, + ) + + +def test_companion_agents_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.CompanionAgentsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_companion_agents_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.dialogflow_v2.services.companion_agents.transports.CompanionAgentsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.CompanionAgentsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "create_companion_agent", + "get_companion_agent", + "update_companion_agent", + "delete_companion_agent", + "list_companion_agents", + "get_location", + "list_locations", + "get_operation", + "cancel_operation", + "list_operations", + ) + 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_companion_agents_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.dialogflow_v2.services.companion_agents.transports.CompanionAgentsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.CompanionAgentsTransport( + 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/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id="octopus", + ) + + +def test_companion_agents_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.dialogflow_v2.services.companion_agents.transports.CompanionAgentsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.CompanionAgentsTransport() + adc.assert_called_once() + + +def test_companion_agents_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) + CompanionAgentsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id=None, + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsGrpcAsyncIOTransport, + ], +) +def test_companion_agents_transport_auth_adc(transport_class): + # If credentials and host are not provided, the transport class should use + # ADC credentials. + with mock.patch.object(google.auth, "default", autospec=True) as adc: + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport_class(quota_project_id="octopus", scopes=["1", "2"]) + adc.assert_called_once_with( + scopes=["1", "2"], + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + quota_project_id="octopus", + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsGrpcAsyncIOTransport, + transports.CompanionAgentsRestTransport, + ], +) +def test_companion_agents_transport_auth_gdch_credentials(transport_class): + host = "https://language.com" + api_audience_tests = [None, "https://language2.com"] + api_audience_expect = [host, "https://language2.com"] + for t, e in zip(api_audience_tests, api_audience_expect): + with mock.patch.object(google.auth, "default", autospec=True) as adc: + gdch_mock = mock.MagicMock() + type(gdch_mock).with_gdch_audience = mock.PropertyMock( + return_value=gdch_mock + ) + adc.return_value = (gdch_mock, None) + transport_class(host=host, api_audience=t) + gdch_mock.with_gdch_audience.assert_called_once_with(e) + + +@pytest.mark.parametrize( + "transport_class,grpc_helpers", + [ + (transports.CompanionAgentsGrpcTransport, grpc_helpers), + (transports.CompanionAgentsGrpcAsyncIOTransport, grpc_helpers_async), + ], +) +def test_companion_agents_transport_create_channel(transport_class, grpc_helpers): + # If credentials and host are not provided, the transport class should use + # ADC credentials. + with ( + mock.patch.object(google.auth, "default", autospec=True) as adc, + mock.patch.object( + grpc_helpers, "create_channel", autospec=True + ) as create_channel, + ): + creds = ga_credentials.AnonymousCredentials() + adc.return_value = (creds, None) + transport_class(quota_project_id="octopus", scopes=["1", "2"]) + + create_channel.assert_called_with( + "dialogflow.googleapis.com:443", + credentials=creds, + credentials_file=None, + quota_project_id="octopus", + default_scopes=( + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/dialogflow", + ), + scopes=["1", "2"], + default_host="dialogflow.googleapis.com", + ssl_credentials=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsGrpcAsyncIOTransport, + ], +) +def test_companion_agents_grpc_transport_client_cert_source_for_mtls(transport_class): + cred = ga_credentials.AnonymousCredentials() + + # Check ssl_channel_credentials is used if provided. + with mock.patch.object(transport_class, "create_channel") as mock_create_channel: + mock_ssl_channel_creds = mock.Mock() + transport_class( + host="squid.clam.whelk", + credentials=cred, + ssl_channel_credentials=mock_ssl_channel_creds, + ) + mock_create_channel.assert_called_once_with( + "squid.clam.whelk:443", + credentials=cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_channel_creds, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + + # Check if ssl_channel_credentials is not provided, then client_cert_source_for_mtls + # is used. + with mock.patch.object(transport_class, "create_channel", return_value=mock.Mock()): + with mock.patch("grpc.ssl_channel_credentials") as mock_ssl_cred: + transport_class( + credentials=cred, + client_cert_source_for_mtls=client_cert_source_callback, + ) + expected_cert, expected_key = client_cert_source_callback() + mock_ssl_cred.assert_called_once_with( + certificate_chain=expected_cert, private_key=expected_key + ) + + +def test_companion_agents_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.CompanionAgentsRestTransport( + 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", + [ + "grpc", + "grpc_asyncio", + "rest", + ], +) +def test_companion_agents_host_no_port(transport_name): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="dialogflow.googleapis.com" + ), + transport=transport_name, + ) + assert client.transport._host == ( + "dialogflow.googleapis.com:443" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://dialogflow.googleapis.com" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + "grpc", + "grpc_asyncio", + "rest", + ], +) +def test_companion_agents_host_with_port(transport_name): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_options=client_options.ClientOptions( + api_endpoint="dialogflow.googleapis.com:8000" + ), + transport=transport_name, + ) + assert client.transport._host == ( + "dialogflow.googleapis.com:8000" + if transport_name in ["grpc", "grpc_asyncio"] + else "https://dialogflow.googleapis.com:8000" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + "rest", + ], +) +def test_companion_agents_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = CompanionAgentsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = CompanionAgentsClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.create_companion_agent._session + session2 = client2.transport.create_companion_agent._session + assert session1 != session2 + session1 = client1.transport.get_companion_agent._session + session2 = client2.transport.get_companion_agent._session + assert session1 != session2 + session1 = client1.transport.update_companion_agent._session + session2 = client2.transport.update_companion_agent._session + assert session1 != session2 + session1 = client1.transport.delete_companion_agent._session + session2 = client2.transport.delete_companion_agent._session + assert session1 != session2 + session1 = client1.transport.list_companion_agents._session + session2 = client2.transport.list_companion_agents._session + assert session1 != session2 + + +def test_companion_agents_grpc_transport_channel(): + channel = grpc.secure_channel("http://localhost/", grpc.local_channel_credentials()) + + # Check that channel is used if provided. + transport = transports.CompanionAgentsGrpcTransport( + host="squid.clam.whelk", + channel=channel, + ) + assert transport.grpc_channel == channel + assert transport._host == "squid.clam.whelk:443" + assert transport._ssl_channel_credentials == None + + +def test_companion_agents_grpc_asyncio_transport_channel(): + channel = aio.secure_channel("http://localhost/", grpc.local_channel_credentials()) + + # Check that channel is used if provided. + transport = transports.CompanionAgentsGrpcAsyncIOTransport( + host="squid.clam.whelk", + channel=channel, + ) + assert transport.grpc_channel == channel + assert transport._host == "squid.clam.whelk:443" + assert transport._ssl_channel_credentials == None + + +# Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are +# removed from grpc/grpc_asyncio transport constructor. +@pytest.mark.filterwarnings("ignore::FutureWarning") +@pytest.mark.parametrize( + "transport_class", + [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsGrpcAsyncIOTransport, + ], +) +def test_companion_agents_transport_channel_mtls_with_client_cert_source( + transport_class, +): + with mock.patch( + "grpc.ssl_channel_credentials", autospec=True + ) as grpc_ssl_channel_cred: + with mock.patch.object( + transport_class, "create_channel" + ) as grpc_create_channel: + mock_ssl_cred = mock.Mock() + grpc_ssl_channel_cred.return_value = mock_ssl_cred + + mock_grpc_channel = mock.Mock() + grpc_create_channel.return_value = mock_grpc_channel + + cred = ga_credentials.AnonymousCredentials() + with pytest.warns(DeprecationWarning): + with mock.patch.object(google.auth, "default") as adc: + adc.return_value = (cred, None) + transport = transport_class( + host="squid.clam.whelk", + api_mtls_endpoint="mtls.squid.clam.whelk", + client_cert_source=client_cert_source_callback, + ) + adc.assert_called_once() + + grpc_ssl_channel_cred.assert_called_once_with( + certificate_chain=b"cert bytes", private_key=b"key bytes" + ) + grpc_create_channel.assert_called_once_with( + "mtls.squid.clam.whelk:443", + credentials=cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_cred, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + assert transport.grpc_channel == mock_grpc_channel + assert transport._ssl_channel_credentials == mock_ssl_cred + + +# Remove this test when deprecated arguments (api_mtls_endpoint, client_cert_source) are +# removed from grpc/grpc_asyncio transport constructor. +@pytest.mark.parametrize( + "transport_class", + [ + transports.CompanionAgentsGrpcTransport, + transports.CompanionAgentsGrpcAsyncIOTransport, + ], +) +def test_companion_agents_transport_channel_mtls_with_adc(transport_class): + mock_ssl_cred = mock.Mock() + with mock.patch.multiple( + "google.auth.transport.grpc.SslCredentials", + __init__=mock.Mock(return_value=None), + ssl_credentials=mock.PropertyMock(return_value=mock_ssl_cred), + ): + with mock.patch.object( + transport_class, "create_channel" + ) as grpc_create_channel: + mock_grpc_channel = mock.Mock() + grpc_create_channel.return_value = mock_grpc_channel + mock_cred = mock.Mock() + + with pytest.warns(DeprecationWarning): + transport = transport_class( + host="squid.clam.whelk", + credentials=mock_cred, + api_mtls_endpoint="mtls.squid.clam.whelk", + client_cert_source=None, + ) + + grpc_create_channel.assert_called_once_with( + "mtls.squid.clam.whelk:443", + credentials=mock_cred, + credentials_file=None, + scopes=None, + ssl_credentials=mock_ssl_cred, + quota_project_id=None, + options=[ + ("grpc.max_send_message_length", -1), + ("grpc.max_receive_message_length", -1), + ], + ) + assert transport.grpc_channel == mock_grpc_channel + + +def test_ces_tool_path(): + project = "squid" + location = "clam" + app = "whelk" + tool = "octopus" + expected = "projects/{project}/locations/{location}/apps/{app}/tools/{tool}".format( + project=project, + location=location, + app=app, + tool=tool, + ) + actual = CompanionAgentsClient.ces_tool_path(project, location, app, tool) + assert expected == actual + + +def test_parse_ces_tool_path(): + expected = { + "project": "oyster", + "location": "nudibranch", + "app": "cuttlefish", + "tool": "mussel", + } + path = CompanionAgentsClient.ces_tool_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_ces_tool_path(path) + assert expected == actual + + +def test_companion_agent_path(): + project = "winkle" + location = "nautilus" + companion_agent = "scallop" + expected = "projects/{project}/locations/{location}/companionAgents/{companion_agent}".format( + project=project, + location=location, + companion_agent=companion_agent, + ) + actual = CompanionAgentsClient.companion_agent_path( + project, location, companion_agent + ) + assert expected == actual + + +def test_parse_companion_agent_path(): + expected = { + "project": "abalone", + "location": "squid", + "companion_agent": "clam", + } + path = CompanionAgentsClient.companion_agent_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_companion_agent_path(path) + assert expected == actual + + +def test_toolset_path(): + project = "whelk" + location = "octopus" + app = "oyster" + toolset = "nudibranch" + expected = ( + "projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}".format( + project=project, + location=location, + app=app, + toolset=toolset, + ) + ) + actual = CompanionAgentsClient.toolset_path(project, location, app, toolset) + assert expected == actual + + +def test_parse_toolset_path(): + expected = { + "project": "cuttlefish", + "location": "mussel", + "app": "winkle", + "toolset": "nautilus", + } + path = CompanionAgentsClient.toolset_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_toolset_path(path) + assert expected == actual + + +def test_common_billing_account_path(): + billing_account = "scallop" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = CompanionAgentsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "abalone", + } + path = CompanionAgentsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "squid" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = CompanionAgentsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "clam", + } + path = CompanionAgentsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "whelk" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = CompanionAgentsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "octopus", + } + path = CompanionAgentsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "oyster" + expected = "projects/{project}".format( + project=project, + ) + actual = CompanionAgentsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "nudibranch", + } + path = CompanionAgentsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.parse_common_project_path(path) + assert expected == actual + + +def test_common_location_path(): + project = "cuttlefish" + location = "mussel" + expected = "projects/{project}/locations/{location}".format( + project=project, + location=location, + ) + actual = CompanionAgentsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "winkle", + "location": "nautilus", + } + path = CompanionAgentsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = CompanionAgentsClient.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.CompanionAgentsTransport, "_prep_wrapped_messages" + ) as prep: + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.CompanionAgentsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = CompanionAgentsClient.get_transport_class() + transport = transport_class( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + +def test_cancel_operation(transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = operations_pb2.CancelOperationRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = None + response = client.cancel_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert response is None + + +@pytest.mark.asyncio +async def test_cancel_operation_async(transport: str = "grpc_asyncio"): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = operations_pb2.CancelOperationRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + response = await client.cancel_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert response is None + + +def test_cancel_operation_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = operations_pb2.CancelOperationRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + call.return_value = None + + client.cancel_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_cancel_operation_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = operations_pb2.CancelOperationRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + await client.cancel_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +def test_cancel_operation_from_dict(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = None + + response = client.cancel_operation( + request={ + "name": "locations", + } + ) + call.assert_called() + + +@pytest.mark.asyncio +async def test_cancel_operation_from_dict_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + response = await client.cancel_operation( + request={ + "name": "locations", + } + ) + call.assert_called() + + +def test_cancel_operation_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = None + + client.cancel_operation() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == operations_pb2.CancelOperationRequest() + + +@pytest.mark.asyncio +async def test_cancel_operation_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall(None) + await client.cancel_operation() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == operations_pb2.CancelOperationRequest() + + +def test_get_operation(transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = operations_pb2.GetOperationRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation() + response = client.get_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, operations_pb2.Operation) + + +@pytest.mark.asyncio +async def test_get_operation_async(transport: str = "grpc_asyncio"): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = operations_pb2.GetOperationRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation() + ) + response = await client.get_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, operations_pb2.Operation) + + +def test_get_operation_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = operations_pb2.GetOperationRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + call.return_value = operations_pb2.Operation() + + client.get_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_get_operation_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = operations_pb2.GetOperationRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation() + ) + await client.get_operation(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +def test_get_operation_from_dict(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation() + + response = client.get_operation( + request={ + "name": "locations", + } + ) + call.assert_called() + + +@pytest.mark.asyncio +async def test_get_operation_from_dict_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation() + ) + response = await client.get_operation( + request={ + "name": "locations", + } + ) + call.assert_called() + + +def test_get_operation_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.Operation() + + client.get_operation() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == operations_pb2.GetOperationRequest() + + +@pytest.mark.asyncio +async def test_get_operation_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_operation), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.Operation() + ) + await client.get_operation() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == operations_pb2.GetOperationRequest() + + +def test_list_operations(transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = operations_pb2.ListOperationsRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.ListOperationsResponse() + response = client.list_operations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, operations_pb2.ListOperationsResponse) + + +@pytest.mark.asyncio +async def test_list_operations_async(transport: str = "grpc_asyncio"): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = operations_pb2.ListOperationsRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.ListOperationsResponse() + ) + response = await client.list_operations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, operations_pb2.ListOperationsResponse) + + +def test_list_operations_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = operations_pb2.ListOperationsRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + call.return_value = operations_pb2.ListOperationsResponse() + + client.list_operations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_list_operations_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = operations_pb2.ListOperationsRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.ListOperationsResponse() + ) + await client.list_operations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +def test_list_operations_from_dict(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.ListOperationsResponse() + + response = client.list_operations( + request={ + "name": "locations", + } + ) + call.assert_called() + + +@pytest.mark.asyncio +async def test_list_operations_from_dict_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.ListOperationsResponse() + ) + response = await client.list_operations( + request={ + "name": "locations", + } + ) + call.assert_called() + + +def test_list_operations_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = operations_pb2.ListOperationsResponse() + + client.list_operations() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == operations_pb2.ListOperationsRequest() + + +@pytest.mark.asyncio +async def test_list_operations_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_operations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + operations_pb2.ListOperationsResponse() + ) + await client.list_operations() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == operations_pb2.ListOperationsRequest() + + +def test_list_locations(transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = locations_pb2.ListLocationsRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = locations_pb2.ListLocationsResponse() + response = client.list_locations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, locations_pb2.ListLocationsResponse) + + +@pytest.mark.asyncio +async def test_list_locations_async(transport: str = "grpc_asyncio"): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = locations_pb2.ListLocationsRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.ListLocationsResponse() + ) + response = await client.list_locations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, locations_pb2.ListLocationsResponse) + + +def test_list_locations_field_headers(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = locations_pb2.ListLocationsRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + call.return_value = locations_pb2.ListLocationsResponse() + + client.list_locations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_list_locations_field_headers_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = locations_pb2.ListLocationsRequest() + request.name = "locations" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.ListLocationsResponse() + ) + await client.list_locations(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations", + ) in kw["metadata"] + + +def test_list_locations_from_dict(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = locations_pb2.ListLocationsResponse() + + response = client.list_locations( + request={ + "name": "locations", + } + ) + call.assert_called() + + +@pytest.mark.asyncio +async def test_list_locations_from_dict_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.ListLocationsResponse() + ) + response = await client.list_locations( + request={ + "name": "locations", + } + ) + call.assert_called() + + +def test_list_locations_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = locations_pb2.ListLocationsResponse() + + client.list_locations() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == locations_pb2.ListLocationsRequest() + + +@pytest.mark.asyncio +async def test_list_locations_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.ListLocationsResponse() + ) + await client.list_locations() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == locations_pb2.ListLocationsRequest() + + +def test_get_location(transport: str = "grpc"): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = locations_pb2.GetLocationRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_location), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = locations_pb2.Location() + response = client.get_location(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, locations_pb2.Location) + + +@pytest.mark.asyncio +async def test_get_location_async(transport: str = "grpc_asyncio"): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = locations_pb2.GetLocationRequest() + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_location), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.Location() + ) + response = await client.get_location(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the response is the type that we expect. + assert isinstance(response, locations_pb2.Location) + + +def test_get_location_field_headers(): + client = CompanionAgentsClient(credentials=ga_credentials.AnonymousCredentials()) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = locations_pb2.GetLocationRequest() + request.name = "locations/abc" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_location), "__call__") as call: + call.return_value = locations_pb2.Location() + + client.get_location(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations/abc", + ) in kw["metadata"] + + +@pytest.mark.asyncio +async def test_get_location_field_headers_async(): + client = CompanionAgentsAsyncClient(credentials=async_anonymous_credentials()) + + # Any value that is part of the HTTP/1.1 URI should be sent as + # a field header. Set these to a non-empty value. + request = locations_pb2.GetLocationRequest() + request.name = "locations/abc" + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_location), "__call__") as call: + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.Location() + ) + await client.get_location(request) + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == request + + # Establish that the field header was sent. + _, _, kw = call.mock_calls[0] + assert ( + "x-goog-request-params", + "name=locations/abc", + ) in kw["metadata"] + + +def test_get_location_from_dict(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = locations_pb2.Location() + + response = client.get_location( + request={ + "name": "locations/abc", + } + ) + call.assert_called() + + +@pytest.mark.asyncio +async def test_get_location_from_dict_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_locations), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.Location() + ) + response = await client.get_location( + request={ + "name": "locations", + } + ) + call.assert_called() + + +def test_get_location_flattened(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_location), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = locations_pb2.Location() + + client.get_location() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == locations_pb2.GetLocationRequest() + + +@pytest.mark.asyncio +async def test_get_location_flattened_async(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), + ) + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_location), "__call__") as call: + # Designate an appropriate return value for the call. + call.return_value = grpc_helpers_async.FakeUnaryUnaryCall( + locations_pb2.Location() + ) + await client.get_location() + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert args[0] == locations_pb2.GetLocationRequest() + + +def test_transport_close_grpc(): + client = CompanionAgentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="grpc" + ) + with mock.patch.object( + type(getattr(client.transport, "_grpc_channel")), "close" + ) as close: + with client: + close.assert_not_called() + close.assert_called_once() + + +@pytest.mark.asyncio +async def test_transport_close_grpc_asyncio(): + client = CompanionAgentsAsyncClient( + credentials=async_anonymous_credentials(), transport="grpc_asyncio" + ) + with mock.patch.object( + type(getattr(client.transport, "_grpc_channel")), "close" + ) as close: + async with client: + close.assert_not_called() + close.assert_called_once() + + +def test_transport_close_rest(): + client = CompanionAgentsClient( + 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", + "grpc", + ] + for transport in transports: + client = CompanionAgentsClient( + 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", + [ + (CompanionAgentsClient, transports.CompanionAgentsGrpcTransport), + (CompanionAgentsAsyncClient, transports.CompanionAgentsGrpcAsyncIOTransport), + ], +) +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-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py index f725d4d5c3d5..800b297cb183 100644 --- a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversation_profiles.py @@ -6093,6 +6093,7 @@ def test_create_conversation_profile_rest_call_success(request_type): "skip_empty_event_based_suggestion": True, "use_unredacted_conversation_data": True, "enable_async_tool_call": True, + "companion_agent": "companion_agent_value", }, "end_user_suggestion_config": {}, "message_analysis_config": { @@ -6123,6 +6124,14 @@ def test_create_conversation_profile_rest_call_success(request_type): "language_code": "language_code_value", "enable_word_info": True, "use_timeout_based_endpointing": True, + "gemini_asr_config": { + "model_id": "model_id_value", + "silence_duration_ms": 2023, + "prefix_padding_ms": 1795, + "start_of_speech_sensitivity": 1, + "end_of_speech_sensitivity": 1, + }, + "use_gemini_asr": True, }, "language_code": "language_code_value", "sip_config": { @@ -6451,6 +6460,7 @@ def test_update_conversation_profile_rest_call_success(request_type): "skip_empty_event_based_suggestion": True, "use_unredacted_conversation_data": True, "enable_async_tool_call": True, + "companion_agent": "companion_agent_value", }, "end_user_suggestion_config": {}, "message_analysis_config": { @@ -6481,6 +6491,14 @@ def test_update_conversation_profile_rest_call_success(request_type): "language_code": "language_code_value", "enable_word_info": True, "use_timeout_based_endpointing": True, + "gemini_asr_config": { + "model_id": "model_id_value", + "silence_duration_ms": 2023, + "prefix_padding_ms": 1795, + "start_of_speech_sensitivity": 1, + "end_of_speech_sensitivity": 1, + }, + "use_gemini_asr": True, }, "language_code": "language_code_value", "sip_config": { @@ -8080,10 +8098,38 @@ def test_parse_agent_path(): assert expected == actual -def test_conversation_model_path(): +def test_companion_agent_path(): project = "whelk" location = "octopus" - conversation_model = "oyster" + companion_agent = "oyster" + expected = "projects/{project}/locations/{location}/companionAgents/{companion_agent}".format( + project=project, + location=location, + companion_agent=companion_agent, + ) + actual = ConversationProfilesClient.companion_agent_path( + project, location, companion_agent + ) + assert expected == actual + + +def test_parse_companion_agent_path(): + expected = { + "project": "nudibranch", + "location": "cuttlefish", + "companion_agent": "mussel", + } + path = ConversationProfilesClient.companion_agent_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationProfilesClient.parse_companion_agent_path(path) + assert expected == actual + + +def test_conversation_model_path(): + project = "winkle" + location = "nautilus" + conversation_model = "scallop" expected = "projects/{project}/locations/{location}/conversationModels/{conversation_model}".format( project=project, location=location, @@ -8097,9 +8143,9 @@ def test_conversation_model_path(): def test_parse_conversation_model_path(): expected = { - "project": "nudibranch", - "location": "cuttlefish", - "conversation_model": "mussel", + "project": "abalone", + "location": "squid", + "conversation_model": "clam", } path = ConversationProfilesClient.conversation_model_path(**expected) @@ -8109,8 +8155,8 @@ def test_parse_conversation_model_path(): def test_conversation_profile_path(): - project = "winkle" - conversation_profile = "nautilus" + project = "whelk" + conversation_profile = "octopus" expected = "projects/{project}/conversationProfiles/{conversation_profile}".format( project=project, conversation_profile=conversation_profile, @@ -8123,8 +8169,8 @@ def test_conversation_profile_path(): def test_parse_conversation_profile_path(): expected = { - "project": "scallop", - "conversation_profile": "abalone", + "project": "oyster", + "conversation_profile": "nudibranch", } path = ConversationProfilesClient.conversation_profile_path(**expected) @@ -8134,9 +8180,9 @@ def test_parse_conversation_profile_path(): def test_cx_security_settings_path(): - project = "squid" - location = "clam" - security_settings = "whelk" + project = "cuttlefish" + location = "mussel" + security_settings = "winkle" expected = "projects/{project}/locations/{location}/securitySettings/{security_settings}".format( project=project, location=location, @@ -8150,9 +8196,9 @@ def test_cx_security_settings_path(): def test_parse_cx_security_settings_path(): expected = { - "project": "octopus", - "location": "oyster", - "security_settings": "nudibranch", + "project": "nautilus", + "location": "scallop", + "security_settings": "abalone", } path = ConversationProfilesClient.cx_security_settings_path(**expected) @@ -8162,9 +8208,9 @@ def test_parse_cx_security_settings_path(): def test_document_path(): - project = "cuttlefish" - knowledge_base = "mussel" - document = "winkle" + project = "squid" + knowledge_base = "clam" + document = "whelk" expected = "projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}".format( project=project, knowledge_base=knowledge_base, @@ -8176,9 +8222,9 @@ def test_document_path(): def test_parse_document_path(): expected = { - "project": "nautilus", - "knowledge_base": "scallop", - "document": "abalone", + "project": "octopus", + "knowledge_base": "oyster", + "document": "nudibranch", } path = ConversationProfilesClient.document_path(**expected) @@ -8188,9 +8234,9 @@ def test_parse_document_path(): def test_generator_path(): - project = "squid" - location = "clam" - generator = "whelk" + project = "cuttlefish" + location = "mussel" + generator = "winkle" expected = "projects/{project}/locations/{location}/generators/{generator}".format( project=project, location=location, @@ -8202,9 +8248,9 @@ def test_generator_path(): def test_parse_generator_path(): expected = { - "project": "octopus", - "location": "oyster", - "generator": "nudibranch", + "project": "nautilus", + "location": "scallop", + "generator": "abalone", } path = ConversationProfilesClient.generator_path(**expected) @@ -8214,8 +8260,8 @@ def test_parse_generator_path(): def test_knowledge_base_path(): - project = "cuttlefish" - knowledge_base = "mussel" + project = "squid" + knowledge_base = "clam" expected = "projects/{project}/knowledgeBases/{knowledge_base}".format( project=project, knowledge_base=knowledge_base, @@ -8226,8 +8272,8 @@ def test_knowledge_base_path(): def test_parse_knowledge_base_path(): expected = { - "project": "winkle", - "knowledge_base": "nautilus", + "project": "whelk", + "knowledge_base": "octopus", } path = ConversationProfilesClient.knowledge_base_path(**expected) @@ -8237,9 +8283,9 @@ def test_parse_knowledge_base_path(): def test_phrase_set_path(): - project = "scallop" - location = "abalone" - phrase_set = "squid" + project = "oyster" + location = "nudibranch" + phrase_set = "cuttlefish" expected = "projects/{project}/locations/{location}/phraseSets/{phrase_set}".format( project=project, location=location, @@ -8251,9 +8297,9 @@ def test_phrase_set_path(): def test_parse_phrase_set_path(): expected = { - "project": "clam", - "location": "whelk", - "phrase_set": "octopus", + "project": "mussel", + "location": "winkle", + "phrase_set": "nautilus", } path = ConversationProfilesClient.phrase_set_path(**expected) @@ -8263,7 +8309,7 @@ def test_parse_phrase_set_path(): def test_common_billing_account_path(): - billing_account = "oyster" + billing_account = "scallop" expected = "billingAccounts/{billing_account}".format( billing_account=billing_account, ) @@ -8273,7 +8319,7 @@ def test_common_billing_account_path(): def test_parse_common_billing_account_path(): expected = { - "billing_account": "nudibranch", + "billing_account": "abalone", } path = ConversationProfilesClient.common_billing_account_path(**expected) @@ -8283,7 +8329,7 @@ def test_parse_common_billing_account_path(): def test_common_folder_path(): - folder = "cuttlefish" + folder = "squid" expected = "folders/{folder}".format( folder=folder, ) @@ -8293,7 +8339,7 @@ def test_common_folder_path(): def test_parse_common_folder_path(): expected = { - "folder": "mussel", + "folder": "clam", } path = ConversationProfilesClient.common_folder_path(**expected) @@ -8303,7 +8349,7 @@ def test_parse_common_folder_path(): def test_common_organization_path(): - organization = "winkle" + organization = "whelk" expected = "organizations/{organization}".format( organization=organization, ) @@ -8313,7 +8359,7 @@ def test_common_organization_path(): def test_parse_common_organization_path(): expected = { - "organization": "nautilus", + "organization": "octopus", } path = ConversationProfilesClient.common_organization_path(**expected) @@ -8323,7 +8369,7 @@ def test_parse_common_organization_path(): def test_common_project_path(): - project = "scallop" + project = "oyster" expected = "projects/{project}".format( project=project, ) @@ -8333,7 +8379,7 @@ def test_common_project_path(): def test_parse_common_project_path(): expected = { - "project": "abalone", + "project": "nudibranch", } path = ConversationProfilesClient.common_project_path(**expected) @@ -8343,8 +8389,8 @@ def test_parse_common_project_path(): def test_common_location_path(): - project = "squid" - location = "clam" + project = "cuttlefish" + location = "mussel" expected = "projects/{project}/locations/{location}".format( project=project, location=location, @@ -8355,8 +8401,8 @@ def test_common_location_path(): def test_parse_common_location_path(): expected = { - "project": "whelk", - "location": "octopus", + "project": "winkle", + "location": "nautilus", } path = ConversationProfilesClient.common_location_path(**expected) diff --git a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversations.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversations.py index 096a4acf8a4f..0749071147ed 100644 --- a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversations.py +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_conversations.py @@ -7824,6 +7824,7 @@ def test_create_conversation_rest_call_success(request_type): "skip_empty_event_based_suggestion": True, "use_unredacted_conversation_data": True, "enable_async_tool_call": True, + "companion_agent": "companion_agent_value", }, "end_user_suggestion_config": {}, "message_analysis_config": { @@ -7854,6 +7855,14 @@ def test_create_conversation_rest_call_success(request_type): "language_code": "language_code_value", "enable_word_info": True, "use_timeout_based_endpointing": True, + "gemini_asr_config": { + "model_id": "model_id_value", + "silence_duration_ms": 2023, + "prefix_padding_ms": 1795, + "start_of_speech_sensitivity": 1, + "end_of_speech_sensitivity": 1, + }, + "use_gemini_asr": True, }, "language_code": "language_code_value", "sip_config": { @@ -10559,9 +10568,37 @@ def test_parse_ces_tool_path(): assert expected == actual -def test_conversation_path(): +def test_companion_agent_path(): project = "winkle" - conversation = "nautilus" + location = "nautilus" + companion_agent = "scallop" + expected = "projects/{project}/locations/{location}/companionAgents/{companion_agent}".format( + project=project, + location=location, + companion_agent=companion_agent, + ) + actual = ConversationsClient.companion_agent_path( + project, location, companion_agent + ) + assert expected == actual + + +def test_parse_companion_agent_path(): + expected = { + "project": "abalone", + "location": "squid", + "companion_agent": "clam", + } + path = ConversationsClient.companion_agent_path(**expected) + + # Check that the path construction is reversible. + actual = ConversationsClient.parse_companion_agent_path(path) + assert expected == actual + + +def test_conversation_path(): + project = "whelk" + conversation = "octopus" expected = "projects/{project}/conversations/{conversation}".format( project=project, conversation=conversation, @@ -10572,8 +10609,8 @@ def test_conversation_path(): def test_parse_conversation_path(): expected = { - "project": "scallop", - "conversation": "abalone", + "project": "oyster", + "conversation": "nudibranch", } path = ConversationsClient.conversation_path(**expected) @@ -10583,9 +10620,9 @@ def test_parse_conversation_path(): def test_conversation_model_path(): - project = "squid" - location = "clam" - conversation_model = "whelk" + project = "cuttlefish" + location = "mussel" + conversation_model = "winkle" expected = "projects/{project}/locations/{location}/conversationModels/{conversation_model}".format( project=project, location=location, @@ -10599,9 +10636,9 @@ def test_conversation_model_path(): def test_parse_conversation_model_path(): expected = { - "project": "octopus", - "location": "oyster", - "conversation_model": "nudibranch", + "project": "nautilus", + "location": "scallop", + "conversation_model": "abalone", } path = ConversationsClient.conversation_model_path(**expected) @@ -10611,8 +10648,8 @@ def test_parse_conversation_model_path(): def test_conversation_profile_path(): - project = "cuttlefish" - conversation_profile = "mussel" + project = "squid" + conversation_profile = "clam" expected = "projects/{project}/conversationProfiles/{conversation_profile}".format( project=project, conversation_profile=conversation_profile, @@ -10625,8 +10662,8 @@ def test_conversation_profile_path(): def test_parse_conversation_profile_path(): expected = { - "project": "winkle", - "conversation_profile": "nautilus", + "project": "whelk", + "conversation_profile": "octopus", } path = ConversationsClient.conversation_profile_path(**expected) @@ -10636,9 +10673,9 @@ def test_parse_conversation_profile_path(): def test_cx_security_settings_path(): - project = "scallop" - location = "abalone" - security_settings = "squid" + project = "oyster" + location = "nudibranch" + security_settings = "cuttlefish" expected = "projects/{project}/locations/{location}/securitySettings/{security_settings}".format( project=project, location=location, @@ -10652,9 +10689,9 @@ def test_cx_security_settings_path(): def test_parse_cx_security_settings_path(): expected = { - "project": "clam", - "location": "whelk", - "security_settings": "octopus", + "project": "mussel", + "location": "winkle", + "security_settings": "nautilus", } path = ConversationsClient.cx_security_settings_path(**expected) @@ -10664,10 +10701,10 @@ def test_parse_cx_security_settings_path(): def test_data_store_path(): - project = "oyster" - location = "nudibranch" - collection = "cuttlefish" - data_store = "mussel" + project = "scallop" + location = "abalone" + collection = "squid" + data_store = "clam" expected = "projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}".format( project=project, location=location, @@ -10682,10 +10719,10 @@ def test_data_store_path(): def test_parse_data_store_path(): expected = { - "project": "winkle", - "location": "nautilus", - "collection": "scallop", - "data_store": "abalone", + "project": "whelk", + "location": "octopus", + "collection": "oyster", + "data_store": "nudibranch", } path = ConversationsClient.data_store_path(**expected) @@ -10695,9 +10732,9 @@ def test_parse_data_store_path(): def test_document_path(): - project = "squid" - knowledge_base = "clam" - document = "whelk" + project = "cuttlefish" + knowledge_base = "mussel" + document = "winkle" expected = "projects/{project}/knowledgeBases/{knowledge_base}/documents/{document}".format( project=project, knowledge_base=knowledge_base, @@ -10709,9 +10746,9 @@ def test_document_path(): def test_parse_document_path(): expected = { - "project": "octopus", - "knowledge_base": "oyster", - "document": "nudibranch", + "project": "nautilus", + "knowledge_base": "scallop", + "document": "abalone", } path = ConversationsClient.document_path(**expected) @@ -10721,9 +10758,9 @@ def test_parse_document_path(): def test_generator_path(): - project = "cuttlefish" - location = "mussel" - generator = "winkle" + project = "squid" + location = "clam" + generator = "whelk" expected = "projects/{project}/locations/{location}/generators/{generator}".format( project=project, location=location, @@ -10735,9 +10772,9 @@ def test_generator_path(): def test_parse_generator_path(): expected = { - "project": "nautilus", - "location": "scallop", - "generator": "abalone", + "project": "octopus", + "location": "oyster", + "generator": "nudibranch", } path = ConversationsClient.generator_path(**expected) @@ -10747,8 +10784,8 @@ def test_parse_generator_path(): def test_knowledge_base_path(): - project = "squid" - knowledge_base = "clam" + project = "cuttlefish" + knowledge_base = "mussel" expected = "projects/{project}/knowledgeBases/{knowledge_base}".format( project=project, knowledge_base=knowledge_base, @@ -10759,8 +10796,8 @@ def test_knowledge_base_path(): def test_parse_knowledge_base_path(): expected = { - "project": "whelk", - "knowledge_base": "octopus", + "project": "winkle", + "knowledge_base": "nautilus", } path = ConversationsClient.knowledge_base_path(**expected) @@ -10770,9 +10807,9 @@ def test_parse_knowledge_base_path(): def test_message_path(): - project = "oyster" - conversation = "nudibranch" - message = "cuttlefish" + project = "scallop" + conversation = "abalone" + message = "squid" expected = ( "projects/{project}/conversations/{conversation}/messages/{message}".format( project=project, @@ -10786,9 +10823,9 @@ def test_message_path(): def test_parse_message_path(): expected = { - "project": "mussel", - "conversation": "winkle", - "message": "nautilus", + "project": "clam", + "conversation": "whelk", + "message": "octopus", } path = ConversationsClient.message_path(**expected) @@ -10798,9 +10835,9 @@ def test_parse_message_path(): def test_phrase_set_path(): - project = "scallop" - location = "abalone" - phrase_set = "squid" + project = "oyster" + location = "nudibranch" + phrase_set = "cuttlefish" expected = "projects/{project}/locations/{location}/phraseSets/{phrase_set}".format( project=project, location=location, @@ -10812,9 +10849,9 @@ def test_phrase_set_path(): def test_parse_phrase_set_path(): expected = { - "project": "clam", - "location": "whelk", - "phrase_set": "octopus", + "project": "mussel", + "location": "winkle", + "phrase_set": "nautilus", } path = ConversationsClient.phrase_set_path(**expected) @@ -10824,9 +10861,9 @@ def test_parse_phrase_set_path(): def test_tool_path(): - project = "oyster" - location = "nudibranch" - tool = "cuttlefish" + project = "scallop" + location = "abalone" + tool = "squid" expected = "projects/{project}/locations/{location}/tools/{tool}".format( project=project, location=location, @@ -10838,9 +10875,9 @@ def test_tool_path(): def test_parse_tool_path(): expected = { - "project": "mussel", - "location": "winkle", - "tool": "nautilus", + "project": "clam", + "location": "whelk", + "tool": "octopus", } path = ConversationsClient.tool_path(**expected) @@ -10850,10 +10887,10 @@ def test_parse_tool_path(): def test_toolset_path(): - project = "scallop" - location = "abalone" - app = "squid" - toolset = "clam" + project = "oyster" + location = "nudibranch" + app = "cuttlefish" + toolset = "mussel" expected = ( "projects/{project}/locations/{location}/apps/{app}/toolsets/{toolset}".format( project=project, @@ -10868,10 +10905,10 @@ def test_toolset_path(): def test_parse_toolset_path(): expected = { - "project": "whelk", - "location": "octopus", - "app": "oyster", - "toolset": "nudibranch", + "project": "winkle", + "location": "nautilus", + "app": "scallop", + "toolset": "abalone", } path = ConversationsClient.toolset_path(**expected) @@ -10881,7 +10918,7 @@ def test_parse_toolset_path(): def test_common_billing_account_path(): - billing_account = "cuttlefish" + billing_account = "squid" expected = "billingAccounts/{billing_account}".format( billing_account=billing_account, ) @@ -10891,7 +10928,7 @@ def test_common_billing_account_path(): def test_parse_common_billing_account_path(): expected = { - "billing_account": "mussel", + "billing_account": "clam", } path = ConversationsClient.common_billing_account_path(**expected) @@ -10901,7 +10938,7 @@ def test_parse_common_billing_account_path(): def test_common_folder_path(): - folder = "winkle" + folder = "whelk" expected = "folders/{folder}".format( folder=folder, ) @@ -10911,7 +10948,7 @@ def test_common_folder_path(): def test_parse_common_folder_path(): expected = { - "folder": "nautilus", + "folder": "octopus", } path = ConversationsClient.common_folder_path(**expected) @@ -10921,7 +10958,7 @@ def test_parse_common_folder_path(): def test_common_organization_path(): - organization = "scallop" + organization = "oyster" expected = "organizations/{organization}".format( organization=organization, ) @@ -10931,7 +10968,7 @@ def test_common_organization_path(): def test_parse_common_organization_path(): expected = { - "organization": "abalone", + "organization": "nudibranch", } path = ConversationsClient.common_organization_path(**expected) @@ -10941,7 +10978,7 @@ def test_parse_common_organization_path(): def test_common_project_path(): - project = "squid" + project = "cuttlefish" expected = "projects/{project}".format( project=project, ) @@ -10951,7 +10988,7 @@ def test_common_project_path(): def test_parse_common_project_path(): expected = { - "project": "clam", + "project": "mussel", } path = ConversationsClient.common_project_path(**expected) @@ -10961,8 +10998,8 @@ def test_parse_common_project_path(): def test_common_location_path(): - project = "whelk" - location = "octopus" + project = "winkle" + location = "nautilus" expected = "projects/{project}/locations/{location}".format( project=project, location=location, @@ -10973,8 +11010,8 @@ def test_common_location_path(): def test_parse_common_location_path(): expected = { - "project": "oyster", - "location": "nudibranch", + "project": "scallop", + "location": "abalone", } path = ConversationsClient.common_location_path(**expected) diff --git a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generator_evaluations.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generator_evaluations.py index 3956abb634fb..20833b5f2892 100644 --- a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generator_evaluations.py +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generator_evaluations.py @@ -4026,7 +4026,10 @@ def test_create_generator_evaluation_rest_call_success(request_type): "ces_tool": "ces_tool_value", "ces_app": "ces_app_value", "action": "action_value", - "error": {"message": "message_value"}, + "error": { + "message": "message_value", + "retryable": True, + }, "raw_content": b"raw_content_blob", "content": "content_value", "create_time": {}, diff --git a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generators.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generators.py index 5a41009ae71a..06b7b9296ded 100644 --- a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generators.py +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_generators.py @@ -4360,7 +4360,10 @@ def test_create_generator_rest_call_success(request_type): "ces_tool": "ces_tool_value", "ces_app": "ces_app_value", "action": "action_value", - "error": {"message": "message_value"}, + "error": { + "message": "message_value", + "retryable": True, + }, "raw_content": b"raw_content_blob", "content": "content_value", "create_time": {}, @@ -5089,7 +5092,10 @@ def test_update_generator_rest_call_success(request_type): "ces_tool": "ces_tool_value", "ces_app": "ces_app_value", "action": "action_value", - "error": {"message": "message_value"}, + "error": { + "message": "message_value", + "retryable": True, + }, "raw_content": b"raw_content_blob", "content": "content_value", "create_time": {}, diff --git a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_participants.py b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_participants.py index bd9db98a6484..2dea23a9e422 100644 --- a/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_participants.py +++ b/packages/google-cloud-dialogflow/tests/unit/gapic/dialogflow_v2/test_participants.py @@ -42,6 +42,7 @@ import google.protobuf.field_mask_pb2 as field_mask_pb2 # type: ignore import google.protobuf.struct_pb2 as struct_pb2 # type: ignore import google.protobuf.timestamp_pb2 as timestamp_pb2 # type: ignore +import google.rpc.status_pb2 as status_pb2 # type: ignore import google.type.latlng_pb2 as latlng_pb2 # type: ignore from google.api_core import ( client_options, @@ -3224,6 +3225,334 @@ async def test_streaming_analyze_content_async( assert isinstance(message, participant.StreamingAnalyzeContentResponse) +@pytest.mark.parametrize( + "request_type", + [ + participant.BidiStreamingAnalyzeContentRequest(), + {}, + ], +) +def test_bidi_streaming_analyze_content(request_type, transport: str = "grpc"): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + requests = [request] + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.bidi_streaming_analyze_content), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = iter([participant.BidiStreamingAnalyzeContentResponse()]) + response = client.bidi_streaming_analyze_content(iter(requests)) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert next(args[0]) == request + + # Establish that the response is the type that we expect. + for message in response: + assert isinstance(message, participant.BidiStreamingAnalyzeContentResponse) + + +def test_bidi_streaming_analyze_content_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 = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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.bidi_streaming_analyze_content + 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.bidi_streaming_analyze_content + ] = mock_rpc + request = [{}] + client.bidi_streaming_analyze_content(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.bidi_streaming_analyze_content(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_bidi_streaming_analyze_content_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = ParticipantsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.bidi_streaming_analyze_content + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.bidi_streaming_analyze_content + ] = mock_rpc + + request = [{}] + await client.bidi_streaming_analyze_content(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.bidi_streaming_analyze_content(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + participant.BidiStreamingAnalyzeContentRequest(), + {}, + ], +) +async def test_bidi_streaming_analyze_content_async( + request_type, transport: str = "grpc_asyncio" +): + client = ParticipantsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + requests = [request] + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.bidi_streaming_analyze_content), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = mock.Mock(aio.StreamStreamCall, autospec=True) + call.return_value.read = mock.AsyncMock( + side_effect=[participant.BidiStreamingAnalyzeContentResponse()] + ) + response = await client.bidi_streaming_analyze_content(iter(requests)) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert next(args[0]) == request + + # Establish that the response is the type that we expect. + message = await response.read() + assert isinstance(message, participant.BidiStreamingAnalyzeContentResponse) + + +@pytest.mark.parametrize( + "request_type", + [ + participant.StreamingReactiveCompanionSuggestionsRequest(), + {}, + ], +) +def test_streaming_reactive_companion_suggestions( + request_type, transport: str = "grpc" +): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + requests = [request] + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.streaming_reactive_companion_suggestions), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = iter( + [participant.StreamingReactiveCompanionSuggestionsResponse()] + ) + response = client.streaming_reactive_companion_suggestions(iter(requests)) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) == 1 + _, args, _ = call.mock_calls[0] + assert next(args[0]) == request + + # Establish that the response is the type that we expect. + for message in response: + assert isinstance( + message, participant.StreamingReactiveCompanionSuggestionsResponse + ) + + +def test_streaming_reactive_companion_suggestions_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 = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="grpc", + ) + + # 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.streaming_reactive_companion_suggestions + 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.streaming_reactive_companion_suggestions + ] = mock_rpc + request = [{}] + client.streaming_reactive_companion_suggestions(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.streaming_reactive_companion_suggestions(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +async def test_streaming_reactive_companion_suggestions_async_use_cached_wrapped_rpc( + transport: str = "grpc_asyncio", +): + # 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_async.wrap_method") as wrapper_fn: + client = ParticipantsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Should wrap all calls on client creation + assert wrapper_fn.call_count > 0 + wrapper_fn.reset_mock() + + # Ensure method has been cached + assert ( + client._client._transport.streaming_reactive_companion_suggestions + in client._client._transport._wrapped_methods + ) + + # Replace cached wrapped function with mock + mock_rpc = mock.AsyncMock() + mock_rpc.return_value = mock.Mock() + client._client._transport._wrapped_methods[ + client._client._transport.streaming_reactive_companion_suggestions + ] = mock_rpc + + request = [{}] + await client.streaming_reactive_companion_suggestions(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + await client.streaming_reactive_companion_suggestions(request) + + # Establish that a new wrapper was not created for this call + assert wrapper_fn.call_count == 0 + assert mock_rpc.call_count == 2 + + +@pytest.mark.asyncio +@pytest.mark.parametrize( + "request_type", + [ + participant.StreamingReactiveCompanionSuggestionsRequest(), + {}, + ], +) +async def test_streaming_reactive_companion_suggestions_async( + request_type, transport: str = "grpc_asyncio" +): + client = ParticipantsAsyncClient( + credentials=async_anonymous_credentials(), + transport=transport, + ) + + # Everything is optional in proto3 as far as the runtime is concerned, + # and we are mocking out the actual API, so just send an empty request. + request = request_type + requests = [request] + + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.streaming_reactive_companion_suggestions), "__call__" + ) as call: + # Designate an appropriate return value for the call. + call.return_value = mock.Mock(aio.StreamStreamCall, autospec=True) + call.return_value.read = mock.AsyncMock( + side_effect=[participant.StreamingReactiveCompanionSuggestionsResponse()] + ) + response = await client.streaming_reactive_companion_suggestions(iter(requests)) + + # Establish that the underlying gRPC stub method was called. + assert len(call.mock_calls) + _, args, _ = call.mock_calls[0] + assert next(args[0]) == request + + # Establish that the response is the type that we expect. + message = await response.read() + assert isinstance( + message, participant.StreamingReactiveCompanionSuggestionsResponse + ) + + @pytest.mark.parametrize( "request_type", [ @@ -5482,6 +5811,28 @@ def test_streaming_analyze_content_rest_no_http_options(): client.streaming_analyze_content(requests) +def test_bidi_streaming_analyze_content_rest_no_http_options(): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = participant.BidiStreamingAnalyzeContentRequest() + requests = [request] + with pytest.raises(RuntimeError): + client.bidi_streaming_analyze_content(requests) + + +def test_streaming_reactive_companion_suggestions_rest_no_http_options(): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = participant.StreamingReactiveCompanionSuggestionsRequest() + requests = [request] + with pytest.raises(RuntimeError): + client.streaming_reactive_companion_suggestions(requests) + + def test_suggest_articles_rest_use_cached_wrapped_rpc(): # Clients should use _prep_wrapped_messages to create cached wrapped rpcs, # instead of constructing them on each call @@ -6139,6 +6490,34 @@ def test_streaming_analyze_content_rest_error(): ) +def test_bidi_streaming_analyze_content_rest_error(): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # Since a `google.api.http` annotation is required for using a rest transport + # method, this should error. + with pytest.raises(NotImplementedError) as not_implemented_error: + client.bidi_streaming_analyze_content({}) + assert ( + "Method BidiStreamingAnalyzeContent is not available over REST transport" + in str(not_implemented_error.value) + ) + + +def test_streaming_reactive_companion_suggestions_rest_error(): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # Since a `google.api.http` annotation is required for using a rest transport + # method, this should error. + with pytest.raises(NotImplementedError) as not_implemented_error: + client.streaming_reactive_companion_suggestions({}) + assert ( + "Method StreamingReactiveCompanionSuggestions is not available over REST transport" + in str(not_implemented_error.value) + ) + + def test_credentials_transport_error(): # It is an error to provide credentials and a transport instance. transport = transports.ParticipantsGrpcTransport( @@ -7598,6 +7977,32 @@ def test_streaming_analyze_content_rest_error(): ) +def test_bidi_streaming_analyze_content_rest_error(): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + with pytest.raises(NotImplementedError) as not_implemented_error: + client.bidi_streaming_analyze_content({}) + assert ( + "Method BidiStreamingAnalyzeContent is not available over REST transport" + in str(not_implemented_error.value) + ) + + +def test_streaming_reactive_companion_suggestions_rest_error(): + client = ParticipantsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + with pytest.raises(NotImplementedError) as not_implemented_error: + client.streaming_reactive_companion_suggestions({}) + assert ( + "Method StreamingReactiveCompanionSuggestions is not available over REST transport" + in str(not_implemented_error.value) + ) + + def test_suggest_articles_rest_bad_request( request_type=participant.SuggestArticlesRequest, ): @@ -8704,6 +9109,8 @@ def test_participants_base_transport(): "update_participant", "analyze_content", "streaming_analyze_content", + "bidi_streaming_analyze_content", + "streaming_reactive_companion_suggestions", "suggest_articles", "suggest_faq_answers", "suggest_smart_replies", @@ -9005,6 +9412,12 @@ def test_participants_client_transport_session_collision(transport_name): session1 = client1.transport.streaming_analyze_content._session session2 = client2.transport.streaming_analyze_content._session assert session1 != session2 + session1 = client1.transport.bidi_streaming_analyze_content._session + session2 = client2.transport.bidi_streaming_analyze_content._session + assert session1 != session2 + session1 = client1.transport.streaming_reactive_companion_suggestions._session + session2 = client2.transport.streaming_reactive_companion_suggestions._session + assert session1 != session2 session1 = client1.transport.suggest_articles._session session2 = client2.transport.suggest_articles._session assert session1 != session2 diff --git a/packages/google-cloud-retail/google/cloud/retail_v2alpha/types/catalog.py b/packages/google-cloud-retail/google/cloud/retail_v2alpha/types/catalog.py index 10afd073c538..60de6422fbe2 100644 --- a/packages/google-cloud-retail/google/cloud/retail_v2alpha/types/catalog.py +++ b/packages/google-cloud-retail/google/cloud/retail_v2alpha/types/catalog.py @@ -700,6 +700,10 @@ class CompletionConfig(proto.Message): [GetOperation][google.longrunning.Operations.GetOperation] API to retrieve the latest state of the Long Running Operation. + enable_agent_prompts (bool): + Optional. If set to true, the conversational + shopping agent prompts will be served. Default + value is false. """ name: str = proto.Field( @@ -749,6 +753,10 @@ class CompletionConfig(proto.Message): proto.STRING, number=10, ) + enable_agent_prompts: bool = proto.Field( + proto.BOOL, + number=16, + ) class MerchantCenterLink(proto.Message): diff --git a/packages/google-cloud-retail/tests/unit/gapic/retail_v2alpha/test_catalog_service.py b/packages/google-cloud-retail/tests/unit/gapic/retail_v2alpha/test_catalog_service.py index 922d13270014..5bca647f0c6b 100644 --- a/packages/google-cloud-retail/tests/unit/gapic/retail_v2alpha/test_catalog_service.py +++ b/packages/google-cloud-retail/tests/unit/gapic/retail_v2alpha/test_catalog_service.py @@ -2629,6 +2629,7 @@ def test_get_completion_config(request_type, transport: str = "grpc"): last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) response = client.get_completion_config(request) @@ -2657,6 +2658,7 @@ def test_get_completion_config(request_type, transport: str = "grpc"): response.last_allowlist_import_operation == "last_allowlist_import_operation_value" ) + assert response.enable_agent_prompts is True def test_get_completion_config_non_empty_request_with_auto_populated_field(): @@ -2807,6 +2809,7 @@ async def test_get_completion_config_async( last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) ) response = await client.get_completion_config(request) @@ -2836,6 +2839,7 @@ async def test_get_completion_config_async( response.last_allowlist_import_operation == "last_allowlist_import_operation_value" ) + assert response.enable_agent_prompts is True def test_get_completion_config_field_headers(): @@ -3020,6 +3024,7 @@ def test_update_completion_config(request_type, transport: str = "grpc"): last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) response = client.update_completion_config(request) @@ -3048,6 +3053,7 @@ def test_update_completion_config(request_type, transport: str = "grpc"): response.last_allowlist_import_operation == "last_allowlist_import_operation_value" ) + assert response.enable_agent_prompts is True def test_update_completion_config_non_empty_request_with_auto_populated_field(): @@ -3194,6 +3200,7 @@ async def test_update_completion_config_async( last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) ) response = await client.update_completion_config(request) @@ -3223,6 +3230,7 @@ async def test_update_completion_config_async( response.last_allowlist_import_operation == "last_allowlist_import_operation_value" ) + assert response.enable_agent_prompts is True def test_update_completion_config_field_headers(): @@ -7485,6 +7493,7 @@ async def test_get_completion_config_empty_call_grpc_asyncio(): last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) ) await client.get_completion_config(request=None) @@ -7520,6 +7529,7 @@ async def test_update_completion_config_empty_call_grpc_asyncio(): last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) ) await client.update_completion_config(request=None) @@ -8383,6 +8393,7 @@ def test_get_completion_config_rest_call_success(request_type): last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) # Wrap the value into a proper Response obj @@ -8416,6 +8427,7 @@ def test_get_completion_config_rest_call_success(request_type): response.last_allowlist_import_operation == "last_allowlist_import_operation_value" ) + assert response.enable_agent_prompts is True @pytest.mark.parametrize("null_interceptor", [True, False]) @@ -8552,6 +8564,7 @@ def test_update_completion_config_rest_call_success(request_type): "last_denylist_import_operation": "last_denylist_import_operation_value", "allowlist_input_config": {}, "last_allowlist_import_operation": "last_allowlist_import_operation_value", + "enable_agent_prompts": True, } # 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 @@ -8636,6 +8649,7 @@ def get_message_fields(field): last_suggestions_import_operation="last_suggestions_import_operation_value", last_denylist_import_operation="last_denylist_import_operation_value", last_allowlist_import_operation="last_allowlist_import_operation_value", + enable_agent_prompts=True, ) # Wrap the value into a proper Response obj @@ -8669,6 +8683,7 @@ def get_message_fields(field): response.last_allowlist_import_operation == "last_allowlist_import_operation_value" ) + assert response.enable_agent_prompts is True @pytest.mark.parametrize("null_interceptor", [True, False]) diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_model.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_model.py index 5f775ad6e9e1..55b428b21de1 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_model.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_model.py @@ -752,8 +752,9 @@ class Altitude(proto.Message): interval (google.devicesandservices.health_v4.types.ObservationTimeInterval): Required. Observed interval. gain_millimeters (int): - Required. Altitude gain in millimeters over - the observed interval. + Required. Altitude gain in millimeters over the observed + interval. Must be in the range + ``[-1000000000, 1000000000]``. This field is a member of `oneof`_ ``_gain_millimeters``. """ @@ -810,7 +811,8 @@ class BodyFat(proto.Message): Required. The time at which body fat was measured. percentage (float): - Required. Body fat percentage, in range [0, 100]. + Required. Body fat percentage. Must be in the range + ``[0, 100]``. This field is a member of `oneof`_ ``_percentage``. """ @@ -861,8 +863,8 @@ class CoreBodyTemperature(proto.Message): Required. The time at which core body temperature was measured. temperature_celsius (float): - Required. The core body temperature in - Celsius. + Required. The core body temperature in Celsius. Must be in + the range ``[0, 100]``. This field is a member of `oneof`_ ``_temperature_celsius``. measurement_location (google.devicesandservices.health_v4.types.CoreBodyTemperature.MeasurementLocation): @@ -1218,20 +1220,20 @@ class DailyOxygenSaturation(proto.Message): Required. Date (in user's timezone) of the daily oxygen saturation record. average_percentage (float): - Required. The average value of the oxygen - saturation samples during the sleep. + Required. The average value of the oxygen saturation samples + during the sleep. Must be in the range ``[0, 100]``. This field is a member of `oneof`_ ``_average_percentage``. lower_bound_percentage (float): - Required. The lower bound of the confidence - interval of oxygen saturation samples during - sleep. + Required. The lower bound of the confidence interval of + oxygen saturation samples during sleep. Must be in the range + ``[0, 100]``. This field is a member of `oneof`_ ``_lower_bound_percentage``. upper_bound_percentage (float): - Required. The upper bound of the confidence - interval of oxygen saturation samples during - sleep. + Required. The upper bound of the confidence interval of + oxygen saturation samples during sleep. Must be in the range + ``[0, 100]``. This field is a member of `oneof`_ ``_upper_bound_percentage``. standard_deviation_percentage (float): @@ -1406,8 +1408,9 @@ class DailyVO2Max(proto.Message): Required. The date for which the Daily VO2 max was measured. vo2_max (float): - Required. Daily VO2 max value measured as in - ml consumed oxygen / kg of body weight / min. + Required. Daily VO2 max value measured as in ml consumed + oxygen / kg of body weight / min. Must be in the range + ``[0, 100]``. This field is a member of `oneof`_ ``_vo2_max``. estimated (bool): @@ -1488,8 +1491,8 @@ class Distance(proto.Message): interval (google.devicesandservices.health_v4.types.ObservationTimeInterval): Required. Observed interval. millimeters (int): - Required. Distance in millimeters over the - observed interval. + Required. Distance in millimeters over the observed + interval. Must be in the range ``[0, 1000000000]``. This field is a member of `oneof`_ ``_millimeters``. """ @@ -2507,8 +2510,8 @@ class Floors(proto.Message): interval (google.devicesandservices.health_v4.types.ObservationTimeInterval): Required. Observed interval count (int): - Required. Number of floors in the recorded - interval + Required. Number of floors in the recorded interval. Must be + in the range ``[0, 1000000]``. This field is a member of `oneof`_ ``_count``. """ @@ -2572,8 +2575,8 @@ class HeartRate(proto.Message): sample_time (google.devicesandservices.health_v4.types.ObservationSampleTime): Required. Observation time beats_per_minute (int): - Required. The heart rate value in beats per - minute. + Required. The heart rate value in beats per minute. Must be + in the range ``[1, 300]``. This field is a member of `oneof`_ ``_beats_per_minute``. metadata (google.devicesandservices.health_v4.types.HeartRate.HeartRateMetadata): @@ -2757,7 +2760,8 @@ class RunVO2Max(proto.Message): Required. The time at which the metric was measured. run_vo2_max (float): - Required. Run VO2 max value in ml/kg/min. + Required. Run VO2 max value in ml/kg/min. Must be in the + range ``[0, 100]``. This field is a member of `oneof`_ ``_run_vo2_max``. """ @@ -2816,7 +2820,8 @@ class Height(proto.Message): Required. The time at which the height was recorded. height_millimeters (int): - Required. Height of the user in millimeters. + Required. Height of the user in millimeters. Must be in the + range ``[0, 3000]``. This field is a member of `oneof`_ ``_height_millimeters``. """ @@ -2847,10 +2852,10 @@ class HeartRateVariability(proto.Message): Required. The time of the heart rate variability measurement. root_mean_square_of_successive_differences_milliseconds (float): - Optional. The root mean square of successive - differences between normal heartbeats. This is a - measure of heart rate variability used by Google - Health. + Optional. The root mean square of successive differences + between normal heartbeats. This is a measure of heart rate + variability used by Google Health. Must be in the range + ``[1, 200]``. This field is a member of `oneof`_ ``_root_mean_square_of_successive_differences_milliseconds``. standard_deviation_milliseconds (float): @@ -2858,8 +2863,34 @@ class HeartRateVariability(proto.Message): rate variability measurement. This field is a member of `oneof`_ ``_standard_deviation_milliseconds``. + metadata (google.devicesandservices.health_v4.types.HeartRateVariability.HeartRateVariabilityMetadata): + Optional. Additional information about the + heart rate variability measurement. """ + class HeartRateVariabilityMetadata(proto.Message): + r"""Metadata for HeartRateVariability. + + Attributes: + high_frequency_power (float): + Optional. The power in interbeat interval + fluctuations within the high frequency band + (0.15 Hz - 0.4 Hz). + low_frequency_power (float): + Optional. The power in interbeat interval + fluctuations within the low frequency band (0.04 + Hz - 0.15 Hz). + """ + + high_frequency_power: float = proto.Field( + proto.DOUBLE, + number=2, + ) + low_frequency_power: float = proto.Field( + proto.DOUBLE, + number=3, + ) + sample_time: data_coordinates.ObservationSampleTime = proto.Field( proto.MESSAGE, number=1, @@ -2875,6 +2906,11 @@ class HeartRateVariability(proto.Message): number=3, optional=True, ) + metadata: HeartRateVariabilityMetadata = proto.Field( + proto.MESSAGE, + number=4, + message=HeartRateVariabilityMetadata, + ) class VolumeQuantity(proto.Message): @@ -2884,8 +2920,8 @@ class VolumeQuantity(proto.Message): Attributes: milliliters (float): - Required. Value representing the volume in - milliliters. + Required. Value representing the volume in milliliters. Must + be in the range ``[0, 100000]``. This field is a member of `oneof`_ ``_milliliters``. user_provided_unit (google.devicesandservices.health_v4.types.VolumeUnit): @@ -3374,7 +3410,8 @@ class WeightQuantity(proto.Message): Attributes: grams (float): - Required. The weight value in grams. + Required. The weight value in grams. Must be in the range + ``[0, 100000]``. This field is a member of `oneof`_ ``_grams``. user_provided_unit (google.devicesandservices.health_v4.types.WeightUnit): @@ -3401,7 +3438,8 @@ class EnergyQuantity(proto.Message): Attributes: kcal (float): - Required. The energy value in kilocalories. + Required. The energy value in kilocalories. Must be in the + range ``[0, 100000]``. This field is a member of `oneof`_ ``_kcal``. user_provided_unit (google.devicesandservices.health_v4.types.EnergyUnit): @@ -3886,8 +3924,8 @@ class OxygenSaturation(proto.Message): Required. The time at which oxygen saturation was measured. percentage (float): - Required. The oxygen saturation percentage. - Valid values are from 0 to 100. + Required. The oxygen saturation percentage. Must be in the + range ``[0, 100]``. This field is a member of `oneof`_ ``_percentage``. """ @@ -4499,8 +4537,8 @@ class Steps(proto.Message): interval (google.devicesandservices.health_v4.types.ObservationTimeInterval): Required. Observed interval. count (int): - Required. Number of steps in the recorded - interval. + Required. Number of steps in the recorded interval. Must be + in the range ``[0, 1000000]``. This field is a member of `oneof`_ ``_count``. """ @@ -4716,8 +4754,8 @@ class VO2Max(proto.Message): Required. The time at which VO2 max was measured. vo2_max (float): - Required. VO2 max value measured as in ml - consumed oxygen / kg of body weight / min. + Required. VO2 max value measured as in ml consumed oxygen / + kg of body weight / min. Must be in the range ``[0, 100]``. This field is a member of `oneof`_ ``_vo2_max``. measurement_method (google.devicesandservices.health_v4.types.VO2Max.MeasurementMethod): @@ -4808,7 +4846,8 @@ class Weight(proto.Message): Required. The time at which the weight was measured weight_grams (float): - Required. Weight of a user in grams. + Required. Weight of a user in grams. Must be in the range + ``[0, 1000000]``. This field is a member of `oneof`_ ``_weight_grams``. notes (str): @@ -4861,8 +4900,8 @@ class BloodGlucose(proto.Message): Required. The time at which blood glucose was measured. blood_glucose_milligrams_per_deciliter (float): - Required. Blood glucose level concentration - in mg/dL. + Required. Blood glucose level concentration in mg/dL. Must + be in the range ``[0, 900]``. This field is a member of `oneof`_ ``_blood_glucose_milligrams_per_deciliter``. measurement_source (google.devicesandservices.health_v4.types.BloodGlucose.MeasurementSource): @@ -5082,8 +5121,8 @@ class ActiveEnergyBurned(proto.Message): interval (google.devicesandservices.health_v4.types.ObservationTimeInterval): Required. Observed interval kcal (float): - Required. Energy burned during an activity, - measured in kilocalories. + Required. Energy burned during an activity, measured in + kilocalories. Must be in the range ``[0, 1000000]``. This field is a member of `oneof`_ ``_kcal``. """ @@ -5523,6 +5562,30 @@ class Mood(proto.Enum): Loving. COMPASSIONATE (56): Compassionate. + DEPRESSED (57): + Depressed. + GOOD (58): + Good. + LOW_ENERGY (59): + Low energy. + OBSESSIVE_THOUGHTS (60): + Obsessive thoughts. + PANIC (61): + Panic. + PLAYFUL (62): + Playful. + PLEASED (63): + Pleased. + SENSITIVE (64): + Sensitive. + SLEEPY (65): + Sleepy. + SWINGS (66): + Mood swings. + UNHAPPY (67): + Unhappy. + VERY_SELF_CRITICAL (68): + Very self-critical. """ MOOD_UNSPECIFIED = 0 @@ -5582,6 +5645,18 @@ class Mood(proto.Enum): ACCOMPLISHED = 54 LOVING = 55 COMPASSIONATE = 56 + DEPRESSED = 57 + GOOD = 58 + LOW_ENERGY = 59 + OBSESSIVE_THOUGHTS = 60 + PANIC = 61 + PLAYFUL = 62 + PLEASED = 63 + SENSITIVE = 64 + SLEEPY = 65 + SWINGS = 66 + UNHAPPY = 67 + VERY_SELF_CRITICAL = 68 class Valence(proto.Enum): r"""The valence. diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_points.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_points.py index f8daeb457a89..dbbc6e1251cc 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_points.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/data_points.py @@ -1987,6 +1987,20 @@ class ReconcileDataPointsRequest(proto.Message): - ``users/me/dataSourceFamilies/google-sources`` - Includes first-party Google data, such as data from tracker devices, manually logged data, and Health Connect. + - ``users/me/dataSourceFamilies/self-sources`` - Includes + only the data the calling client wrote through this API, + that is, data points whose data source was registered + through this API with the same OAuth client ID as the + caller. + + Callers that were only granted write scopes for the + requested data type may only read the data they wrote + themselves: their requests are implicitly restricted to + ``self-sources``, and requesting any other data source + family fails with ``PERMISSION_DENIED``. + + If no data point matches the requested data source family, + the response is an empty list rather than an error. """ parent: str = proto.Field( @@ -2060,10 +2074,14 @@ class RollUpDataPointsRequest(proto.Message): ``active-minutes`` and ``total-calories`` is 14 days. The maximum range for all other data types is 90 days. window_size (google.protobuf.duration_pb2.Duration): - Required. The size of the time window to - group data points into before applying the - aggregation functions. Must be at least 1 - second. + Required. The size of the time window to group data points + into before applying the aggregation functions. Must be at + least 1 second. + + If the requested range is not an exact multiple of + ``window_size``, the final bucket chronologically will be + truncated at the upper endpoint of the range and will cover + a duration shorter than ``window_size``. page_size (int): Optional. The maximum number of data points to return. If unspecified, at most 1440 data @@ -2093,6 +2111,20 @@ class RollUpDataPointsRequest(proto.Message): - ``users/me/dataSourceFamilies/google-sources`` - Includes first-party Google data, such as data from tracker devices, manually logged data, and Health Connect. + - ``users/me/dataSourceFamilies/self-sources`` - Includes + only the data the calling client wrote through this API, + that is, data points whose data source was registered + through this API with the same OAuth client ID as the + caller. + + Callers that were only granted write scopes for the + requested data type may only read the data they wrote + themselves: their requests are implicitly restricted to + ``self-sources``, and requesting any other data source + family fails with ``PERMISSION_DENIED``. + + If no data point matches the requested data source family, + the response is an empty list rather than an error. """ parent: str = proto.Field( @@ -2174,8 +2206,13 @@ class DailyRollUpDataPointsRequest(proto.Message): ``active-minutes`` and ``total-calories`` is 14 days. The maximum range for all other data types is 90 days. window_size_days (int): - Optional. Aggregation window size, in number - of days. Defaults to 1 if not specified. + Optional. Aggregation window size, in number of days. + Defaults to 1 if not specified. + + If the requested range is not an exact multiple of + ``window_size_days``, the final bucket chronologically will + be truncated at the upper endpoint of the range and will + cover a duration shorter than ``window_size_days``. page_size (int): Optional. The maximum number of data points to return. If unspecified, at most 1440 data @@ -2204,6 +2241,20 @@ class DailyRollUpDataPointsRequest(proto.Message): - ``users/me/dataSourceFamilies/google-sources`` - Includes first-party Google data, such as data from tracker devices, manually logged data, and Health Connect. + - ``users/me/dataSourceFamilies/self-sources`` - Includes + only the data the calling client wrote through this API, + that is, data points whose data source was registered + through this API with the same OAuth client ID as the + caller. + + Callers that were only granted write scopes for the + requested data type may only read the data they wrote + themselves: their requests are implicitly restricted to + ``self-sources``, and requesting any other data source + family fails with ``PERMISSION_DENIED``. + + If no data point matches the requested data source family, + the response is an empty list rather than an error. """ parent: str = proto.Field( diff --git a/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/health_profile.py b/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/health_profile.py index 5fe342ad719d..482a80f21b50 100644 --- a/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/health_profile.py +++ b/packages/google-devicesandservices-health/google/devicesandservices/health_v4/types/health_profile.py @@ -84,6 +84,8 @@ class Profile(proto.Message): string of 1-63 characters consisting of lowercase and uppercase letters, numbers, and hyphens. The literal ``me`` can also be used to refer to the authenticated user. + + This field is read-only. age (int): Optional. The age in years based on the user's birth date. @@ -98,57 +100,49 @@ class Profile(proto.Message): Optional. The user's user configured walking stride length, in millimeters. - The user must consent to one of the following access scopes - to access this field: + The user must consent to the following access scope to + access this field: - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`` - - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness`` - This field is a member of `oneof`_ ``_user_configured_walking_stride_length_mm``. user_configured_running_stride_length_mm (int): Optional. The user's user configured running stride length, in millimeters. - The user must consent to one of the following access scopes - to access this field: + The user must consent to the following access scope to + access this field: - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`` - - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness`` - This field is a member of `oneof`_ ``_user_configured_running_stride_length_mm``. auto_walking_stride_length_mm (int): Output only. The automatically calculated walking stride length, in millimeters. - The user must consent to one of the following access scopes - to access this field: + The user must consent to the following access scope to + access this field: - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`` - - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness`` - This field is a member of `oneof`_ ``_auto_walking_stride_length_mm``. auto_running_stride_length_mm (int): Output only. The automatically calculated running stride length, in millimeters. - The user must consent to one of the following access scopes - to access this field: + The user must consent to the following access scope to + access this field: - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness.readonly`` - - ``https://www.googleapis.com/auth/googlehealth.activity_and_fitness`` - This field is a member of `oneof`_ ``_auto_running_stride_length_mm``. """ @@ -460,6 +454,8 @@ class Settings(proto.Message): string of 1-63 characters consisting of lowercase and uppercase letters, numbers, and hyphens. The literal ``me`` can also be used to refer to the authenticated user. + + This field is read-only. auto_stride_enabled (bool): Optional. True if the user's stride length is determined automatically. diff --git a/packages/google-devicesandservices-health/tests/unit/gapic/health_v4/test_data_points_service.py b/packages/google-devicesandservices-health/tests/unit/gapic/health_v4/test_data_points_service.py index d4a7757b5a7a..21fd5ba55e26 100644 --- a/packages/google-devicesandservices-health/tests/unit/gapic/health_v4/test_data_points_service.py +++ b/packages/google-devicesandservices-health/tests/unit/gapic/health_v4/test_data_points_service.py @@ -7105,6 +7105,7 @@ def test_create_data_point_rest_call_success(request_type): "sample_time": {}, "root_mean_square_of_successive_differences_milliseconds": 0.5830000000000001, "standard_deviation_milliseconds": 0.32880000000000004, + "metadata": {"high_frequency_power": 0.2141, "low_frequency_power": 0.2063}, }, "daily_sleep_temperature_derivations": { "date": {}, @@ -7646,6 +7647,7 @@ def test_update_data_point_rest_call_success(request_type): "sample_time": {}, "root_mean_square_of_successive_differences_milliseconds": 0.5830000000000001, "standard_deviation_milliseconds": 0.32880000000000004, + "metadata": {"high_frequency_power": 0.2141, "low_frequency_power": 0.2063}, }, "daily_sleep_temperature_derivations": { "date": {}, diff --git a/packages/google-shopping-merchant-products/google/shopping/merchant_products_v1/types/products_common.py b/packages/google-shopping-merchant-products/google/shopping/merchant_products_v1/types/products_common.py index d13667cb6adc..6dadaf20f874 100644 --- a/packages/google-shopping-merchant-products/google/shopping/merchant_products_v1/types/products_common.py +++ b/packages/google-shopping-merchant-products/google/shopping/merchant_products_v1/types/products_common.py @@ -1101,9 +1101,8 @@ class `__ Product Certifications, for example for energy efficiency labeling of products recorded in the `EU EPREL `__ database. - See the `Help - Center `__ - article for more information. + For more information, see + `Certification `__. structured_title (google.shopping.merchant_products_v1.types.StructuredTitle): Structured title, for algorithmically (AI)-generated titles. @@ -1138,6 +1137,10 @@ class `__ Supports multiple minimum order values. Different minimum order values can be specified per country, service and surface. Maximum entries: 100. + warranty (google.shopping.merchant_products_v1.types.ProductAttributes.Warranty): + The + `warranty `__ + of the product. vin (str): The `Vehicle Identification Number (VIN) `__ @@ -1232,10 +1235,10 @@ class `__ fees of the vehicle. See the `Vehicle expenses `__ for more information. - warranty (google.shopping.merchant_products_v1.types.ProductAttributes.Warranty): - The - `warranty `__ - of the vehicle. + returns (MutableSequence[google.shopping.merchant_products_v1.types.ProductAttributes.Returns]): + Optional. `Return + rules `__ + for the product. display_address (google.shopping.merchant_products_v1.types.ProductAttributes.DisplayAddress): The display address of the property. latitude (float): @@ -1291,6 +1294,8 @@ class `__ The short title of the item. This field is a member of `oneof`_ ``_short_title``. + lease_term (google.shopping.merchant_products_v1.types.ProductAttributes.LeaseTerm): + The lease term of the property. questions_and_answers (MutableSequence[google.shopping.merchant_products_v1.types.ProductAttributes.QuestionAndAnswer]): Optional. Contains user-, merchant-, and manufacturer-authored `questions and @@ -2357,11 +2362,35 @@ class Warranty(proto.Message): Attributes: duration (int): - The warranty duration in months. + The warranty duration in units. Default is in months, can be + overridden by the ``duration_unit`` field. mileage (google.shopping.merchant_products_v1.types.ProductAttributes.Mileage): - The warranty mileage. + The warranty mileage (only applies to + vehicles). + duration_unit (google.shopping.merchant_products_v1.types.ProductAttributes.Warranty.WarrantyDurationUnit): + The unit for the warranty duration. Assumed to be ``MONTH`` + if equal to ``WARRANTY_DURATION_UNIT_UNSPECIFIED``. """ + class WarrantyDurationUnit(proto.Enum): + r"""The warranty duration unit of the product. + + Values: + WARRANTY_DURATION_UNIT_UNSPECIFIED (0): + Indicates that the warranty duration unit is + unspecified. + MONTH (1): + Indicates that the warranty duration unit is + month. + YEAR (2): + Indicates that the warranty duration unit is + year. + """ + + WARRANTY_DURATION_UNIT_UNSPECIFIED = 0 + MONTH = 1 + YEAR = 2 + duration: int = proto.Field( proto.INT64, number=1, @@ -2371,6 +2400,11 @@ class Warranty(proto.Message): number=2, message="ProductAttributes.Mileage", ) + duration_unit: "ProductAttributes.Warranty.WarrantyDurationUnit" = proto.Field( + proto.ENUM, + number=3, + enum="ProductAttributes.Warranty.WarrantyDurationUnit", + ) class ProductFee(proto.Message): r"""The product fee attribute containing type and amount. @@ -2531,6 +2565,291 @@ class PetType(proto.Enum): ) ) + class LeaseTerm(proto.Message): + r"""The lease term of the property. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + type_ (google.shopping.merchant_products_v1.types.ProductAttributes.LeaseTerm.LeaseTermType): + The type of lease term. + duration_value (int): + The duration value of the lease term. + + This field is a member of `oneof`_ ``_duration_value``. + duration_unit (google.shopping.merchant_products_v1.types.ProductAttributes.LeaseTerm.DurationUnit): + The duration unit of the lease term. + """ + + class LeaseTermType(proto.Enum): + r"""The type of lease term. + + Values: + LEASE_TERM_TYPE_UNSPECIFIED (0): + Unspecified lease term type. + FIXED_TERM (1): + Fixed term. + """ + + LEASE_TERM_TYPE_UNSPECIFIED = 0 + FIXED_TERM = 1 + + class DurationUnit(proto.Enum): + r"""The unit of duration. + + Values: + DURATION_UNIT_UNSPECIFIED (0): + Unspecified duration unit. + MONTHS (1): + Month. + WEEKS (2): + Week. + """ + + DURATION_UNIT_UNSPECIFIED = 0 + MONTHS = 1 + WEEKS = 2 + + type_: "ProductAttributes.LeaseTerm.LeaseTermType" = proto.Field( + proto.ENUM, + number=1, + enum="ProductAttributes.LeaseTerm.LeaseTermType", + ) + duration_value: int = proto.Field( + proto.INT64, + number=2, + optional=True, + ) + duration_unit: "ProductAttributes.LeaseTerm.DurationUnit" = proto.Field( + proto.ENUM, + number=3, + enum="ProductAttributes.LeaseTerm.DurationUnit", + ) + + class Returns(proto.Message): + r"""The returns of the product. + + This message has `oneof`_ fields (mutually exclusive fields). + For each oneof, at most one member field can be set at the same time. + Setting any member of the oneof automatically clears all other + members. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + restocking_fee (google.shopping.type.types.Price): + A flat restocking fee penalty. + + This field is a member of `oneof`_ ``restocking_fee_oneof``. + restocking_percentage_fee (float): + A percentage restocking fee penalty. + + This field is a member of `oneof`_ ``restocking_fee_oneof``. + countries (MutableSequence[str]): + The `CLDR territory + code `__ + of the countries to which an item can be returned. + window_days (int): + The duration of the return window in days. + + This field is a member of `oneof`_ ``_window_days``. + window_type (google.shopping.merchant_products_v1.types.ProductAttributes.Returns.ReturnWindowType): + Special return window behavior. + + This field is a member of `oneof`_ ``_window_type``. + item_conditions (MutableSequence[google.shopping.merchant_products_v1.types.ProductAttributes.Returns.ItemCondition]): + The condition the item must be in to be + accepted. + methods (MutableSequence[google.shopping.merchant_products_v1.types.ProductAttributes.Returns.ReturnMethod]): + The physical methods by which the item can be + returned. + outcomes (MutableSequence[google.shopping.merchant_products_v1.types.ProductAttributes.Returns.ReturnOutcome]): + The financial outcomes available for a + return. + shipping_fee (google.shopping.type.types.Price): + The fixed cost out-of-pocket for a customer + to return an item. + + This field is a member of `oneof`_ ``_shipping_fee``. + shipping_fee_type (google.shopping.merchant_products_v1.types.ProductAttributes.Returns.ReturnShippingFeeType): + The type of return shipping fee. + + This field is a member of `oneof`_ ``_shipping_fee_type``. + policy_url (str): + The URL of the return policy. + + This field is a member of `oneof`_ ``_policy_url``. + """ + + class ReturnWindowType(proto.Enum): + r"""Type of return window for the return policy. + + Values: + RETURN_WINDOW_TYPE_UNSPECIFIED (0): + The return window type is unspecified. + FINITE_RETURN_WINDOW (1): + Window with a fixed number of days. If this is set, the + ``window_days`` field must be set. + NO_RETURNS (2): + No returns accepted. + LIFETIME (3): + Lifetime returns accepted. + """ + + RETURN_WINDOW_TYPE_UNSPECIFIED = 0 + FINITE_RETURN_WINDOW = 1 + NO_RETURNS = 2 + LIFETIME = 3 + + class ReturnMethod(proto.Enum): + r"""The physical method by which the item can be returned. + + Values: + RETURN_METHOD_UNSPECIFIED (0): + The return method is unspecified. + BY_MAIL (1): + Customer returns the item by mail. + IN_STORE (2): + Customer returns the item in a store. + AT_A_KIOSK (3): + Customer drops off the item at a kiosk. + DROP_OFF_LOCATION (4): + Customer drops off the item at a 3rd party + partner location. + """ + + RETURN_METHOD_UNSPECIFIED = 0 + BY_MAIL = 1 + IN_STORE = 2 + AT_A_KIOSK = 3 + DROP_OFF_LOCATION = 4 + + class ItemCondition(proto.Enum): + r"""The acceptable item condition for a return. + + Values: + ITEM_CONDITION_UNSPECIFIED (0): + The item condition is unspecified. + NEW (1): + New condition. + LIKE_NEW (2): + Like new condition. + USED (3): + Used condition. + DEFECTIVE_ONLY (4): + Only defective items are accepted. + """ + + ITEM_CONDITION_UNSPECIFIED = 0 + NEW = 1 + LIKE_NEW = 2 + USED = 3 + DEFECTIVE_ONLY = 4 + + class ReturnOutcome(proto.Enum): + r"""The financial outcome of a return. + + Values: + RETURN_OUTCOME_UNSPECIFIED (0): + The return outcome is unspecified. + REFUND (1): + Customer receives a refund. + EXCHANGE (2): + Customer receives an exchange. + STORE_CREDIT (3): + Customer receives store credit. + """ + + RETURN_OUTCOME_UNSPECIFIED = 0 + REFUND = 1 + EXCHANGE = 2 + STORE_CREDIT = 3 + + class ReturnShippingFeeType(proto.Enum): + r"""The type of the return shipping fee. + + Values: + RETURN_SHIPPING_FEE_TYPE_UNSPECIFIED (0): + The return shipping fee type is unspecified. + CUSTOMER_RESPONSIBILITY (1): + The customer is responsible for shipping + costs. + DEDUCTED_FROM_REFUND (2): + The shipping cost is deducted from the + refund. + """ + + RETURN_SHIPPING_FEE_TYPE_UNSPECIFIED = 0 + CUSTOMER_RESPONSIBILITY = 1 + DEDUCTED_FROM_REFUND = 2 + + restocking_fee: types.Price = proto.Field( + proto.MESSAGE, + number=9, + oneof="restocking_fee_oneof", + message=types.Price, + ) + restocking_percentage_fee: float = proto.Field( + proto.DOUBLE, + number=10, + oneof="restocking_fee_oneof", + ) + countries: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=1, + ) + window_days: int = proto.Field( + proto.INT64, + number=2, + optional=True, + ) + window_type: "ProductAttributes.Returns.ReturnWindowType" = proto.Field( + proto.ENUM, + number=3, + optional=True, + enum="ProductAttributes.Returns.ReturnWindowType", + ) + item_conditions: MutableSequence["ProductAttributes.Returns.ItemCondition"] = ( + proto.RepeatedField( + proto.ENUM, + number=4, + enum="ProductAttributes.Returns.ItemCondition", + ) + ) + methods: MutableSequence["ProductAttributes.Returns.ReturnMethod"] = ( + proto.RepeatedField( + proto.ENUM, + number=5, + enum="ProductAttributes.Returns.ReturnMethod", + ) + ) + outcomes: MutableSequence["ProductAttributes.Returns.ReturnOutcome"] = ( + proto.RepeatedField( + proto.ENUM, + number=6, + enum="ProductAttributes.Returns.ReturnOutcome", + ) + ) + shipping_fee: types.Price = proto.Field( + proto.MESSAGE, + number=7, + optional=True, + message=types.Price, + ) + shipping_fee_type: "ProductAttributes.Returns.ReturnShippingFeeType" = ( + proto.Field( + proto.ENUM, + number=8, + optional=True, + enum="ProductAttributes.Returns.ReturnShippingFeeType", + ) + ) + policy_url: str = proto.Field( + proto.STRING, + number=11, + optional=True, + ) + class QuestionAndAnswer(proto.Message): r"""The question and answer for the product. @@ -3180,6 +3499,11 @@ class IdType(proto.Enum): message="ProductMinimumOrderValue", ) ) + warranty: Warranty = proto.Field( + proto.MESSAGE, + number=168, + message=Warranty, + ) vin: str = proto.Field( proto.STRING, number=147, @@ -3273,10 +3597,10 @@ class IdType(proto.Enum): number=167, message=types.Price, ) - warranty: Warranty = proto.Field( + returns: MutableSequence[Returns] = proto.RepeatedField( proto.MESSAGE, - number=168, - message=Warranty, + number=171, + message=Returns, ) display_address: DisplayAddress = proto.Field( proto.MESSAGE, @@ -3356,6 +3680,11 @@ class IdType(proto.Enum): number=194, optional=True, ) + lease_term: LeaseTerm = proto.Field( + proto.MESSAGE, + number=195, + message=LeaseTerm, + ) questions_and_answers: MutableSequence[QuestionAndAnswer] = proto.RepeatedField( proto.MESSAGE, number=173, @@ -3530,6 +3859,12 @@ class ProductInstallment(proto.Message): including interest. This field is a member of `oneof`_ ``_total_amount``. + mileage_allowance (google.shopping.merchant_products_v1.types.ProductAttributes.Mileage): + Optional. The mileage allowance for the lease + of the vehicle. Only applicable to vehicle + products. + + This field is a member of `oneof`_ ``_mileage_allowance``. """ months: int = proto.Field( @@ -3564,6 +3899,12 @@ class ProductInstallment(proto.Message): optional=True, message=types.Price, ) + mileage_allowance: "ProductAttributes.Mileage" = proto.Field( + proto.MESSAGE, + number=7, + optional=True, + message="ProductAttributes.Mileage", + ) class LoyaltyPoints(proto.Message): @@ -3601,6 +3942,10 @@ class LoyaltyPoints(proto.Message): class LoyaltyProgram(proto.Message): r"""A message that represents loyalty program. + For more information on loyalty programs, see `Overview of loyalty + programs `__. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: @@ -3979,6 +4324,23 @@ class ProductCertification(proto.Message): Maximum length is 2000 characters. This field is a member of `oneof`_ ``_certification_value``. + certification_document_link (str): + Optional. URL to the certification document (eg. + ``https://www.example.com/document``), for example, the + product data sheet or fiche required by UK's DESNZ or EU's + EPREL. Maximum length is 2000 characters. For more + information, see + `Certification `__. + + This field is a member of `oneof`_ ``_certification_document_link``. + certification_label_link (str): + Optional. URL to the certification label (eg. + ``https://www.example.com/label``), for example, the energy + efficiency label required by UK's DESNZ or EU's EPREL. + Maximum length is 2000 characters. For more information, see + `Certification `__. + + This field is a member of `oneof`_ ``_certification_label_link``. """ certification_authority: "CertificationAuthority" = proto.Field( @@ -4003,6 +4365,16 @@ class ProductCertification(proto.Message): number=4, optional=True, ) + certification_document_link: str = proto.Field( + proto.STRING, + number=5, + optional=True, + ) + certification_label_link: str = proto.Field( + proto.STRING, + number=6, + optional=True, + ) class StructuredTitle(proto.Message): diff --git a/packages/google-shopping-merchant-products/tests/unit/gapic/merchant_products_v1/test_product_inputs_service.py b/packages/google-shopping-merchant-products/tests/unit/gapic/merchant_products_v1/test_product_inputs_service.py index 95645a6eed0b..3c8f7ed4bf1c 100644 --- a/packages/google-shopping-merchant-products/tests/unit/gapic/merchant_products_v1/test_product_inputs_service.py +++ b/packages/google-shopping-merchant-products/tests/unit/gapic/merchant_products_v1/test_product_inputs_service.py @@ -3007,6 +3007,7 @@ def test_insert_product_input_rest_call_success(request_type): "credit_type": 1, "annual_percentage_rate": 0.2311, "total_amount": {}, + "mileage_allowance": {"value": 541, "unit": 1}, }, "subscription_cost": {"period": 1, "period_length": 1380, "amount": {}}, "loyalty_points": { @@ -3167,6 +3168,8 @@ def test_insert_product_input_rest_call_success(request_type): "certification_name": 1, "certification_code": "certification_code_value", "certification_value": "certification_value_value", + "certification_document_link": "certification_document_link_value", + "certification_label_link": "certification_label_link_value", } ], "structured_title": {"digital_source_type": 1, "content": "content_value"}, @@ -3187,12 +3190,13 @@ def test_insert_product_input_rest_call_success(request_type): "price": {}, } ], + "warranty": {"duration": 870, "mileage": {}, "duration_unit": 1}, "vin": "vin_value", "model": "model_value", "trim": "trim_value", "body_style": 1, "year": 433, - "mileage": {"value": 541, "unit": 1}, + "mileage": {}, "electric_range": {}, "fuel_consumption": {"value": 0.541, "unit": 1}, "fuel_consumption_discharged_battery": {}, @@ -3207,7 +3211,21 @@ def test_insert_product_input_rest_call_success(request_type): "vehicle_price_type": 1, "vehicle_mandatory_inspection_included": True, "vehicle_expenses": {}, - "warranty": {"duration": 870, "mileage": {}}, + "returns": [ + { + "restocking_fee": {}, + "restocking_percentage_fee": 0.2629, + "countries": ["countries_value1", "countries_value2"], + "window_days": 1192, + "window_type": 1, + "item_conditions": [1], + "methods": [1], + "outcomes": [1], + "shipping_fee": {}, + "shipping_fee_type": 1, + "policy_url": "policy_url_value", + } + ], "display_address": { "street_number": "street_number_value", "street_name": "street_name_value", @@ -3230,6 +3248,7 @@ def test_insert_product_input_rest_call_success(request_type): "specialty_housing_type": 1, "product_fee": [{"type_": 1, "amount": {}}], "short_title": "short_title_value", + "lease_term": {"type_": 1, "duration_value": 1506, "duration_unit": 1}, "questions_and_answers": [ {"question": "question_value", "answer": "answer_value"} ], @@ -3507,6 +3526,7 @@ def test_update_product_input_rest_call_success(request_type): "credit_type": 1, "annual_percentage_rate": 0.2311, "total_amount": {}, + "mileage_allowance": {"value": 541, "unit": 1}, }, "subscription_cost": {"period": 1, "period_length": 1380, "amount": {}}, "loyalty_points": { @@ -3667,6 +3687,8 @@ def test_update_product_input_rest_call_success(request_type): "certification_name": 1, "certification_code": "certification_code_value", "certification_value": "certification_value_value", + "certification_document_link": "certification_document_link_value", + "certification_label_link": "certification_label_link_value", } ], "structured_title": {"digital_source_type": 1, "content": "content_value"}, @@ -3687,12 +3709,13 @@ def test_update_product_input_rest_call_success(request_type): "price": {}, } ], + "warranty": {"duration": 870, "mileage": {}, "duration_unit": 1}, "vin": "vin_value", "model": "model_value", "trim": "trim_value", "body_style": 1, "year": 433, - "mileage": {"value": 541, "unit": 1}, + "mileage": {}, "electric_range": {}, "fuel_consumption": {"value": 0.541, "unit": 1}, "fuel_consumption_discharged_battery": {}, @@ -3707,7 +3730,21 @@ def test_update_product_input_rest_call_success(request_type): "vehicle_price_type": 1, "vehicle_mandatory_inspection_included": True, "vehicle_expenses": {}, - "warranty": {"duration": 870, "mileage": {}}, + "returns": [ + { + "restocking_fee": {}, + "restocking_percentage_fee": 0.2629, + "countries": ["countries_value1", "countries_value2"], + "window_days": 1192, + "window_type": 1, + "item_conditions": [1], + "methods": [1], + "outcomes": [1], + "shipping_fee": {}, + "shipping_fee_type": 1, + "policy_url": "policy_url_value", + } + ], "display_address": { "street_number": "street_number_value", "street_name": "street_name_value", @@ -3730,6 +3767,7 @@ def test_update_product_input_rest_call_success(request_type): "specialty_housing_type": 1, "product_fee": [{"type_": 1, "amount": {}}], "short_title": "short_title_value", + "lease_term": {"type_": 1, "duration_value": 1506, "duration_unit": 1}, "questions_and_answers": [ {"question": "question_value", "answer": "answer_value"} ], diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnect_member_instances.rst b/preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnect_member_instances.rst new file mode 100644 index 000000000000..e799270d76c5 --- /dev/null +++ b/preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnect_member_instances.rst @@ -0,0 +1,10 @@ +AcceleratorInterconnectMemberInstances +-------------------------------------------------------- + +.. automodule:: google.cloud.compute_v1.services.accelerator_interconnect_member_instances + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.accelerator_interconnect_member_instances.pagers + :members: + :inherited-members: diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnects.rst b/preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnects.rst new file mode 100644 index 000000000000..99b7f4eea153 --- /dev/null +++ b/preview-packages/google-cloud-compute/docs/compute_v1/accelerator_interconnects.rst @@ -0,0 +1,10 @@ +AcceleratorInterconnects +------------------------------------------ + +.. automodule:: google.cloud.compute_v1.services.accelerator_interconnects + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.accelerator_interconnects.pagers + :members: + :inherited-members: diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst b/preview-packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst new file mode 100644 index 000000000000..0d20fa726f92 --- /dev/null +++ b/preview-packages/google-cloud-compute/docs/compute_v1/global_frontend_settings_service.rst @@ -0,0 +1,6 @@ +GlobalFrontendSettingsService +----------------------------------------------- + +.. automodule:: google.cloud.compute_v1.services.global_frontend_settings_service + :members: + :inherited-members: diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/ha_controllers.rst b/preview-packages/google-cloud-compute/docs/compute_v1/ha_controllers.rst new file mode 100644 index 000000000000..3dc43d098206 --- /dev/null +++ b/preview-packages/google-cloud-compute/docs/compute_v1/ha_controllers.rst @@ -0,0 +1,10 @@ +HaControllers +------------------------------- + +.. automodule:: google.cloud.compute_v1.services.ha_controllers + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.ha_controllers.pagers + :members: + :inherited-members: diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/image_views.rst b/preview-packages/google-cloud-compute/docs/compute_v1/image_views.rst new file mode 100644 index 000000000000..9361d2869ed6 --- /dev/null +++ b/preview-packages/google-cloud-compute/docs/compute_v1/image_views.rst @@ -0,0 +1,10 @@ +ImageViews +---------------------------- + +.. automodule:: google.cloud.compute_v1.services.image_views + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.image_views.pagers + :members: + :inherited-members: diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst b/preview-packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst new file mode 100644 index 000000000000..6dbd04fced83 --- /dev/null +++ b/preview-packages/google-cloud-compute/docs/compute_v1/managed_rulesets.rst @@ -0,0 +1,10 @@ +ManagedRulesets +--------------------------------- + +.. automodule:: google.cloud.compute_v1.services.managed_rulesets + :members: + :inherited-members: + +.. automodule:: google.cloud.compute_v1.services.managed_rulesets.pagers + :members: + :inherited-members: diff --git a/preview-packages/google-cloud-compute/docs/compute_v1/services_.rst b/preview-packages/google-cloud-compute/docs/compute_v1/services_.rst index 928851b02ee5..f4285ebfb7a0 100644 --- a/preview-packages/google-cloud-compute/docs/compute_v1/services_.rst +++ b/preview-packages/google-cloud-compute/docs/compute_v1/services_.rst @@ -3,6 +3,8 @@ Services for Google Cloud Compute v1 API .. toctree:: :maxdepth: 2 + accelerator_interconnect_member_instances + accelerator_interconnects accelerator_types addresses advice @@ -19,15 +21,18 @@ Services for Google Cloud Compute v1 API future_reservations global_addresses global_forwarding_rules + global_frontend_settings_service global_network_endpoint_groups global_operations global_organization_operations global_public_delegated_prefixes global_vm_extension_policies + ha_controllers health_checks hosts image_family_views images + image_views instance_group_manager_resize_requests instance_group_managers instance_groups @@ -46,6 +51,7 @@ Services for Google Cloud Compute v1 API licenses machine_images machine_types + managed_rulesets network_attachments network_edge_security_services network_endpoint_groups diff --git a/preview-packages/google-cloud-compute/google/cloud/compute/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute/__init__.py index c70c8c6e9788..fbbea83b9f17 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute/__init__.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute/__init__.py @@ -18,6 +18,12 @@ __version__ = package_version.__version__ +from google.cloud.compute_v1.services.accelerator_interconnect_member_instances.client import ( + AcceleratorInterconnectMemberInstancesClient, +) +from google.cloud.compute_v1.services.accelerator_interconnects.client import ( + AcceleratorInterconnectsClient, +) from google.cloud.compute_v1.services.accelerator_types.client import ( AcceleratorTypesClient, ) @@ -52,6 +58,9 @@ from google.cloud.compute_v1.services.global_forwarding_rules.client import ( GlobalForwardingRulesClient, ) +from google.cloud.compute_v1.services.global_frontend_settings_service.client import ( + GlobalFrontendSettingsServiceClient, +) from google.cloud.compute_v1.services.global_network_endpoint_groups.client import ( GlobalNetworkEndpointGroupsClient, ) @@ -67,11 +76,13 @@ from google.cloud.compute_v1.services.global_vm_extension_policies.client import ( GlobalVmExtensionPoliciesClient, ) +from google.cloud.compute_v1.services.ha_controllers.client import HaControllersClient from google.cloud.compute_v1.services.health_checks.client import HealthChecksClient from google.cloud.compute_v1.services.hosts.client import HostsClient from google.cloud.compute_v1.services.image_family_views.client import ( ImageFamilyViewsClient, ) +from google.cloud.compute_v1.services.image_views.client import ImageViewsClient from google.cloud.compute_v1.services.images.client import ImagesClient from google.cloud.compute_v1.services.instance_group_manager_resize_requests.client import ( InstanceGroupManagerResizeRequestsClient, @@ -113,6 +124,9 @@ from google.cloud.compute_v1.services.licenses.client import LicensesClient from google.cloud.compute_v1.services.machine_images.client import MachineImagesClient from google.cloud.compute_v1.services.machine_types.client import MachineTypesClient +from google.cloud.compute_v1.services.managed_rulesets.client import ( + ManagedRulesetsClient, +) from google.cloud.compute_v1.services.network_attachments.client import ( NetworkAttachmentsClient, ) @@ -314,6 +328,14 @@ AbandonInstancesInstanceGroupManagerRequest, AbandonInstancesRegionInstanceGroupManagerRequest, AcceleratorConfig, + AcceleratorInterconnect, + AcceleratorInterconnectAcceleratorInterconnectStatus, + AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails, + AcceleratorInterconnectMemberInstance, + AcceleratorInterconnectMemberInstancesListResponse, + AcceleratorInterconnectParams, + AcceleratorInterconnectsInsertRequest, + AcceleratorInterconnectsList, Accelerators, AcceleratorTopologiesInfo, AcceleratorTopologiesInfoAcceleratorTopologyInfo, @@ -363,6 +385,7 @@ AggregatedListFutureReservationsRequest, AggregatedListGlobalOperationsRequest, AggregatedListGlobalVmExtensionPoliciesRequest, + AggregatedListHaControllersRequest, AggregatedListHealthChecksRequest, AggregatedListInstanceGroupManagersRequest, AggregatedListInstanceGroupsRequest, @@ -534,11 +557,13 @@ CapacityHistoryAdviceRequest, CapacityHistoryRequest, CapacityHistoryRequestInstanceProperties, + CapacityHistoryRequestInstancePropertiesAttachedDisk, CapacityHistoryRequestInstancePropertiesScheduling, CapacityHistoryRequestLocationPolicy, CapacityHistoryResponse, CapacityHistoryResponsePreemptionRecord, CapacityHistoryResponsePriceRecord, + CapacityPool, CircuitBreakers, CloneRulesFirewallPolicyRequest, CloneRulesNetworkFirewallPolicyRequest, @@ -575,6 +600,7 @@ Data, Date, DateTime, + DeleteAcceleratorInterconnectRequest, DeleteAccessConfigInstanceRequest, DeleteAddressRequest, DeleteAutoscalerRequest, @@ -596,6 +622,7 @@ DeleteGlobalOrganizationOperationResponse, DeleteGlobalPublicDelegatedPrefixeRequest, DeleteGlobalVmExtensionPolicyRequest, + DeleteHaControllerRequest, DeleteHealthCheckRequest, DeleteImageRequest, DeleteInstanceGroupManagerRequest, @@ -735,6 +762,7 @@ ExternalVpnGatewayInterface, ExternalVpnGatewayList, ExternalVpnGatewayParams, + FailoverHaControllerRequest, FileContentBuffer, Firewall, FirewallList, @@ -782,6 +810,7 @@ FutureResourcesSpecLocationPolicyLocation, FutureResourcesSpecSpecificSKUResources, FutureResourcesSpecTargetResources, + GetAcceleratorInterconnectRequest, GetAcceleratorTypeRequest, GetAddressRequest, GetAssociationFirewallPolicyRequest, @@ -808,12 +837,14 @@ GetFutureReservationRequest, GetGlobalAddressRequest, GetGlobalForwardingRuleRequest, + GetGlobalFrontendSettingRequest, GetGlobalNetworkEndpointGroupRequest, GetGlobalOperationRequest, GetGlobalOrganizationOperationRequest, GetGlobalPublicDelegatedPrefixeRequest, GetGlobalVmExtensionPolicyRequest, GetGuestAttributesInstanceRequest, + GetHaControllerRequest, GetHealthBackendServiceRequest, GetHealthCheckRequest, GetHealthOperationMetadata, @@ -859,6 +890,7 @@ GetIamPolicySubnetworkRequest, GetImageFamilyViewRequest, GetImageRequest, + GetImageViewRequest, GetInstanceGroupManagerRequest, GetInstanceGroupManagerResizeRequestRequest, GetInstanceGroupRequest, @@ -878,6 +910,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetManagedRulesetRequest, GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, @@ -985,6 +1018,8 @@ GetZoneRequest, GetZoneVmExtensionPolicyRequest, GlobalAddressesMoveRequest, + GlobalFrontendSettings, + GlobalFrontendSettingsPatchResponse, GlobalNetworkEndpointGroupsAttachEndpointsRequest, GlobalNetworkEndpointGroupsDetachEndpointsRequest, GlobalOrganizationSetPolicyRequest, @@ -1007,6 +1042,23 @@ GuestAttributesEntry, GuestAttributesValue, GuestOsFeature, + HaController, + HaControllerNetworkingAutoConfiguration, + HaControllerNetworkingAutoConfigurationInternal, + HaControllersAggregatedList, + HaControllersFailoverRequest, + HaControllersList, + HaControllersScopedList, + HaControllerStatus, + HaControllerStatusFailoverProgress, + HaControllerStatusFailoverProgressLastFailoverAttempt, + HaControllerStatusFailoverProgressLastFailoverAttemptErrors, + HaControllerStatusZoneStatus, + HaControllerStatusZoneStatusLastError, + HaControllerStatusZoneStatusLastErrorErrors, + HaControllerZoneConfiguration, + HaControllerZoneConfigurationNodeAffinity, + HaControllerZoneConfigurationReservationAffinity, HealthAggregationPoliciesScopedList, HealthAggregationPolicy, HealthAggregationPolicyAggregatedList, @@ -1058,7 +1110,10 @@ ImageFamilyView, ImageList, ImageParams, + ImageView, + ImageViewsListResponse, InitialStateConfig, + InsertAcceleratorInterconnectRequest, InsertAddressRequest, InsertAutoscalerRequest, InsertBackendBucketRequest, @@ -1075,6 +1130,7 @@ InsertGlobalNetworkEndpointGroupRequest, InsertGlobalPublicDelegatedPrefixeRequest, InsertGlobalVmExtensionPolicyRequest, + InsertHaControllerRequest, InsertHealthCheckRequest, InsertImageRequest, InsertInstanceGroupManagerRequest, @@ -1242,6 +1298,7 @@ InstancesSetSecurityPolicyRequest, InstancesSetServiceAccountRequest, InstancesStartWithEncryptionKeyRequest, + InstancesTroubleshootOperationMetadata, InstanceTemplate, InstanceTemplateAggregatedList, InstanceTemplateList, @@ -1333,6 +1390,7 @@ InterconnectRemoteLocationPermittedConnections, InterconnectsGetDiagnosticsResponse, InterconnectsGetMacsecConfigResponse, + InterconnectsSetNameRequest, Interval, InvalidateCacheUrlMapRequest, Items, @@ -1343,6 +1401,8 @@ LicenseResourceCommitment, LicenseResourceRequirements, LicensesListResponse, + ListAcceleratorInterconnectMemberInstancesRequest, + ListAcceleratorInterconnectsRequest, ListAcceleratorTypesRequest, ListAddressesRequest, ListAssociationsFirewallPolicyRequest, @@ -1371,9 +1431,11 @@ ListGlobalOrganizationOperationsRequest, ListGlobalPublicDelegatedPrefixesRequest, ListGlobalVmExtensionPoliciesRequest, + ListHaControllersRequest, ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -1395,6 +1457,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListManagedRulesetsRequest, ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, @@ -1511,6 +1574,8 @@ ManagedInstanceScheduling, ManagedInstanceShutdownDetails, ManagedInstanceVersion, + ManagedRuleset, + ManagedRulesetList, Metadata, MetadataFilter, MetadataFilterLabelMatch, @@ -1534,6 +1599,7 @@ NetworkAttachmentsScopedList, NetworkEdgeSecurityService, NetworkEdgeSecurityServiceAggregatedList, + NetworkEdgeSecurityServiceParams, NetworkEdgeSecurityServicesScopedList, NetworkEndpoint, NetworkEndpointGroup, @@ -1616,6 +1682,9 @@ PacketMirroringMirroredResourceInfoSubnetInfo, PacketMirroringNetworkInfo, PacketMirroringsScopedList, + PartitionFormability, + PartitionFormabilityStatus, + PatchAssociationRegionNetworkFirewallPolicyRequest, PatchAutoscalerRequest, PatchBackendBucketRequest, PatchBackendServiceRequest, @@ -1624,7 +1693,9 @@ PatchFirewallRequest, PatchForwardingRuleRequest, PatchGlobalForwardingRuleRequest, + PatchGlobalFrontendSettingRequest, PatchGlobalPublicDelegatedPrefixeRequest, + PatchHaControllerRequest, PatchHealthCheckRequest, PatchImageRequest, PatchInstanceGroupManagerRequest, @@ -1719,7 +1790,9 @@ PublicDelegatedPrefixesScopedList, PublicDelegatedPrefixList, PublicDelegatedPrefixPublicDelegatedSubPrefix, - Quota, + QueryFormabilityAcceleratorInterconnectsRequest, + QueryFormabilityRequest, + QueryFormabilityResponse, QuotaExceededInfo, QuotaStatusWarning, RawDisk, @@ -1798,6 +1871,8 @@ ReservationAffinity, ReservationAggregatedList, ReservationBlock, + ReservationBlockBlockDetailedHealthInfo, + ReservationBlockBlockStatus, ReservationBlockHealthInfo, ReservationBlockPhysicalTopology, ReservationBlockPhysicalTopologyInstance, @@ -1824,6 +1899,8 @@ ReservationSubBlocksListResponse, ReservationSubBlocksReportFaultyRequest, ReservationSubBlocksReportFaultyRequestFaultReason, + ReservationSubBlockSubBlockDetailedHealthInfo, + ReservationSubBlockSubBlockStatus, ResetInstanceRequest, ResizeDiskRequest, ResizeInstanceGroupManagerRequest, @@ -1940,6 +2017,7 @@ SecurityPolicyAssociation, SecurityPolicyDdosProtectionConfig, SecurityPolicyList, + SecurityPolicyParams, SecurityPolicyRecaptchaOptionsConfig, SecurityPolicyReference, SecurityPolicyRule, @@ -2048,6 +2126,7 @@ SetNamedPortsInstanceGroupRequest, SetNamedPortsRegionInstanceGroupRequest, SetNameInstanceRequest, + SetNameInterconnectRequest, SetNodeTemplateNodeGroupRequest, SetPrivateIpGoogleAccessSubnetworkRequest, SetProxyHeaderTargetSslProxyRequest, @@ -2385,6 +2464,8 @@ ) __all__ = ( + "AcceleratorInterconnectMemberInstancesClient", + "AcceleratorInterconnectsClient", "AcceleratorTypesClient", "AddressesClient", "AdviceClient", @@ -2401,15 +2482,18 @@ "FutureReservationsClient", "GlobalAddressesClient", "GlobalForwardingRulesClient", + "GlobalFrontendSettingsServiceClient", "GlobalNetworkEndpointGroupsClient", "GlobalOperationsClient", "GlobalOrganizationOperationsClient", "GlobalPublicDelegatedPrefixesClient", "GlobalVmExtensionPoliciesClient", + "HaControllersClient", "HealthChecksClient", "HostsClient", "ImageFamilyViewsClient", "ImagesClient", + "ImageViewsClient", "InstanceGroupManagerResizeRequestsClient", "InstanceGroupManagersClient", "InstanceGroupsClient", @@ -2428,6 +2512,7 @@ "LicensesClient", "MachineImagesClient", "MachineTypesClient", + "ManagedRulesetsClient", "NetworkAttachmentsClient", "NetworkEdgeSecurityServicesClient", "NetworkEndpointGroupsClient", @@ -2514,6 +2599,14 @@ "AbandonInstancesInstanceGroupManagerRequest", "AbandonInstancesRegionInstanceGroupManagerRequest", "AcceleratorConfig", + "AcceleratorInterconnect", + "AcceleratorInterconnectAcceleratorInterconnectStatus", + "AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails", + "AcceleratorInterconnectMemberInstance", + "AcceleratorInterconnectMemberInstancesListResponse", + "AcceleratorInterconnectParams", + "AcceleratorInterconnectsInsertRequest", + "AcceleratorInterconnectsList", "Accelerators", "AcceleratorTopologiesInfo", "AcceleratorTopologiesInfoAcceleratorTopologyInfo", @@ -2563,6 +2656,7 @@ "AggregatedListFutureReservationsRequest", "AggregatedListGlobalOperationsRequest", "AggregatedListGlobalVmExtensionPoliciesRequest", + "AggregatedListHaControllersRequest", "AggregatedListHealthChecksRequest", "AggregatedListInstanceGroupManagersRequest", "AggregatedListInstanceGroupsRequest", @@ -2734,11 +2828,13 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", "CapacityHistoryResponsePreemptionRecord", "CapacityHistoryResponsePriceRecord", + "CapacityPool", "CircuitBreakers", "CloneRulesFirewallPolicyRequest", "CloneRulesNetworkFirewallPolicyRequest", @@ -2775,6 +2871,7 @@ "Data", "Date", "DateTime", + "DeleteAcceleratorInterconnectRequest", "DeleteAccessConfigInstanceRequest", "DeleteAddressRequest", "DeleteAutoscalerRequest", @@ -2796,6 +2893,7 @@ "DeleteGlobalOrganizationOperationResponse", "DeleteGlobalPublicDelegatedPrefixeRequest", "DeleteGlobalVmExtensionPolicyRequest", + "DeleteHaControllerRequest", "DeleteHealthCheckRequest", "DeleteImageRequest", "DeleteInstanceGroupManagerRequest", @@ -2935,6 +3033,7 @@ "ExternalVpnGatewayInterface", "ExternalVpnGatewayList", "ExternalVpnGatewayParams", + "FailoverHaControllerRequest", "FileContentBuffer", "Firewall", "FirewallList", @@ -2982,6 +3081,7 @@ "FutureResourcesSpecLocationPolicyLocation", "FutureResourcesSpecSpecificSKUResources", "FutureResourcesSpecTargetResources", + "GetAcceleratorInterconnectRequest", "GetAcceleratorTypeRequest", "GetAddressRequest", "GetAssociationFirewallPolicyRequest", @@ -3008,12 +3108,14 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", "GetGlobalPublicDelegatedPrefixeRequest", "GetGlobalVmExtensionPolicyRequest", "GetGuestAttributesInstanceRequest", + "GetHaControllerRequest", "GetHealthBackendServiceRequest", "GetHealthCheckRequest", "GetHealthOperationMetadata", @@ -3059,6 +3161,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -3078,6 +3181,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -3185,6 +3289,8 @@ "GetZoneRequest", "GetZoneVmExtensionPolicyRequest", "GlobalAddressesMoveRequest", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", "GlobalOrganizationSetPolicyRequest", @@ -3207,6 +3313,23 @@ "GuestAttributesEntry", "GuestAttributesValue", "GuestOsFeature", + "HaController", + "HaControllerNetworkingAutoConfiguration", + "HaControllerNetworkingAutoConfigurationInternal", + "HaControllersAggregatedList", + "HaControllersFailoverRequest", + "HaControllersList", + "HaControllersScopedList", + "HaControllerStatus", + "HaControllerStatusFailoverProgress", + "HaControllerStatusFailoverProgressLastFailoverAttempt", + "HaControllerStatusFailoverProgressLastFailoverAttemptErrors", + "HaControllerStatusZoneStatus", + "HaControllerStatusZoneStatusLastError", + "HaControllerStatusZoneStatusLastErrorErrors", + "HaControllerZoneConfiguration", + "HaControllerZoneConfigurationNodeAffinity", + "HaControllerZoneConfigurationReservationAffinity", "HealthAggregationPoliciesScopedList", "HealthAggregationPolicy", "HealthAggregationPolicyAggregatedList", @@ -3258,7 +3381,10 @@ "ImageFamilyView", "ImageList", "ImageParams", + "ImageView", + "ImageViewsListResponse", "InitialStateConfig", + "InsertAcceleratorInterconnectRequest", "InsertAddressRequest", "InsertAutoscalerRequest", "InsertBackendBucketRequest", @@ -3275,6 +3401,7 @@ "InsertGlobalNetworkEndpointGroupRequest", "InsertGlobalPublicDelegatedPrefixeRequest", "InsertGlobalVmExtensionPolicyRequest", + "InsertHaControllerRequest", "InsertHealthCheckRequest", "InsertImageRequest", "InsertInstanceGroupManagerRequest", @@ -3442,6 +3569,7 @@ "InstancesSetSecurityPolicyRequest", "InstancesSetServiceAccountRequest", "InstancesStartWithEncryptionKeyRequest", + "InstancesTroubleshootOperationMetadata", "InstanceTemplate", "InstanceTemplateAggregatedList", "InstanceTemplateList", @@ -3533,6 +3661,7 @@ "InterconnectRemoteLocationPermittedConnections", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -3543,6 +3672,8 @@ "LicenseResourceCommitment", "LicenseResourceRequirements", "LicensesListResponse", + "ListAcceleratorInterconnectMemberInstancesRequest", + "ListAcceleratorInterconnectsRequest", "ListAcceleratorTypesRequest", "ListAddressesRequest", "ListAssociationsFirewallPolicyRequest", @@ -3571,9 +3702,11 @@ "ListGlobalOrganizationOperationsRequest", "ListGlobalPublicDelegatedPrefixesRequest", "ListGlobalVmExtensionPoliciesRequest", + "ListHaControllersRequest", "ListHealthChecksRequest", "ListHostsRequest", "ListImagesRequest", + "ListImageViewsRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", "ListInstanceGroupsRequest", @@ -3595,6 +3728,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -3711,6 +3845,8 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -3734,6 +3870,7 @@ "NetworkAttachmentsScopedList", "NetworkEdgeSecurityService", "NetworkEdgeSecurityServiceAggregatedList", + "NetworkEdgeSecurityServiceParams", "NetworkEdgeSecurityServicesScopedList", "NetworkEndpoint", "NetworkEndpointGroup", @@ -3816,6 +3953,9 @@ "PacketMirroringMirroredResourceInfoSubnetInfo", "PacketMirroringNetworkInfo", "PacketMirroringsScopedList", + "PartitionFormability", + "PartitionFormabilityStatus", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -3824,7 +3964,9 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", + "PatchHaControllerRequest", "PatchHealthCheckRequest", "PatchImageRequest", "PatchInstanceGroupManagerRequest", @@ -3919,7 +4061,9 @@ "PublicDelegatedPrefixesScopedList", "PublicDelegatedPrefixList", "PublicDelegatedPrefixPublicDelegatedSubPrefix", - "Quota", + "QueryFormabilityAcceleratorInterconnectsRequest", + "QueryFormabilityRequest", + "QueryFormabilityResponse", "QuotaExceededInfo", "QuotaStatusWarning", "RawDisk", @@ -3998,6 +4142,8 @@ "ReservationAffinity", "ReservationAggregatedList", "ReservationBlock", + "ReservationBlockBlockDetailedHealthInfo", + "ReservationBlockBlockStatus", "ReservationBlockHealthInfo", "ReservationBlockPhysicalTopology", "ReservationBlockPhysicalTopologyInstance", @@ -4024,6 +4170,8 @@ "ReservationSubBlocksListResponse", "ReservationSubBlocksReportFaultyRequest", "ReservationSubBlocksReportFaultyRequestFaultReason", + "ReservationSubBlockSubBlockDetailedHealthInfo", + "ReservationSubBlockSubBlockStatus", "ResetInstanceRequest", "ResizeDiskRequest", "ResizeInstanceGroupManagerRequest", @@ -4140,6 +4288,7 @@ "SecurityPolicyAssociation", "SecurityPolicyDdosProtectionConfig", "SecurityPolicyList", + "SecurityPolicyParams", "SecurityPolicyRecaptchaOptionsConfig", "SecurityPolicyReference", "SecurityPolicyRule", @@ -4248,6 +4397,7 @@ "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNodeTemplateNodeGroupRequest", "SetPrivateIpGoogleAccessSubnetworkRequest", "SetProxyHeaderTargetSslProxyRequest", diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/__init__.py index 56ed0733a80a..5200e02f94fc 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/__init__.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/__init__.py @@ -26,6 +26,8 @@ # https://docs.python.org/3.15/library/sys.html#sys.set_lazy_imports_filter # Older Python versions safely ignore this variable. __lazy_modules__ = { + "google.cloud.compute_v1.services.accelerator_interconnect_member_instances", + "google.cloud.compute_v1.services.accelerator_interconnects", "google.cloud.compute_v1.services.accelerator_types", "google.cloud.compute_v1.services.addresses", "google.cloud.compute_v1.services.advice", @@ -42,14 +44,17 @@ "google.cloud.compute_v1.services.future_reservations", "google.cloud.compute_v1.services.global_addresses", "google.cloud.compute_v1.services.global_forwarding_rules", + "google.cloud.compute_v1.services.global_frontend_settings_service", "google.cloud.compute_v1.services.global_network_endpoint_groups", "google.cloud.compute_v1.services.global_operations", "google.cloud.compute_v1.services.global_organization_operations", "google.cloud.compute_v1.services.global_public_delegated_prefixes", "google.cloud.compute_v1.services.global_vm_extension_policies", + "google.cloud.compute_v1.services.ha_controllers", "google.cloud.compute_v1.services.health_checks", "google.cloud.compute_v1.services.hosts", "google.cloud.compute_v1.services.image_family_views", + "google.cloud.compute_v1.services.image_views", "google.cloud.compute_v1.services.images", "google.cloud.compute_v1.services.instance_group_manager_resize_requests", "google.cloud.compute_v1.services.instance_group_managers", @@ -69,6 +74,7 @@ "google.cloud.compute_v1.services.licenses", "google.cloud.compute_v1.services.machine_images", "google.cloud.compute_v1.services.machine_types", + "google.cloud.compute_v1.services.managed_rulesets", "google.cloud.compute_v1.services.network_attachments", "google.cloud.compute_v1.services.network_edge_security_services", "google.cloud.compute_v1.services.network_endpoint_groups", @@ -156,6 +162,10 @@ } +from .services.accelerator_interconnect_member_instances import ( + AcceleratorInterconnectMemberInstancesClient, +) +from .services.accelerator_interconnects import AcceleratorInterconnectsClient from .services.accelerator_types import AcceleratorTypesClient from .services.addresses import AddressesClient from .services.advice import AdviceClient @@ -172,6 +182,9 @@ from .services.future_reservations import FutureReservationsClient from .services.global_addresses import GlobalAddressesClient from .services.global_forwarding_rules import GlobalForwardingRulesClient +from .services.global_frontend_settings_service import ( + GlobalFrontendSettingsServiceClient, +) from .services.global_network_endpoint_groups import GlobalNetworkEndpointGroupsClient from .services.global_operations import GlobalOperationsClient from .services.global_organization_operations import GlobalOrganizationOperationsClient @@ -179,9 +192,11 @@ GlobalPublicDelegatedPrefixesClient, ) from .services.global_vm_extension_policies import GlobalVmExtensionPoliciesClient +from .services.ha_controllers import HaControllersClient from .services.health_checks import HealthChecksClient from .services.hosts import HostsClient from .services.image_family_views import ImageFamilyViewsClient +from .services.image_views import ImageViewsClient from .services.images import ImagesClient from .services.instance_group_manager_resize_requests import ( InstanceGroupManagerResizeRequestsClient, @@ -203,6 +218,7 @@ from .services.licenses import LicensesClient from .services.machine_images import MachineImagesClient from .services.machine_types import MachineTypesClient +from .services.managed_rulesets import ManagedRulesetsClient from .services.network_attachments import NetworkAttachmentsClient from .services.network_edge_security_services import NetworkEdgeSecurityServicesClient from .services.network_endpoint_groups import NetworkEndpointGroupsClient @@ -296,6 +312,14 @@ AbandonInstancesInstanceGroupManagerRequest, AbandonInstancesRegionInstanceGroupManagerRequest, AcceleratorConfig, + AcceleratorInterconnect, + AcceleratorInterconnectAcceleratorInterconnectStatus, + AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails, + AcceleratorInterconnectMemberInstance, + AcceleratorInterconnectMemberInstancesListResponse, + AcceleratorInterconnectParams, + AcceleratorInterconnectsInsertRequest, + AcceleratorInterconnectsList, Accelerators, AcceleratorTopologiesInfo, AcceleratorTopologiesInfoAcceleratorTopologyInfo, @@ -345,6 +369,7 @@ AggregatedListFutureReservationsRequest, AggregatedListGlobalOperationsRequest, AggregatedListGlobalVmExtensionPoliciesRequest, + AggregatedListHaControllersRequest, AggregatedListHealthChecksRequest, AggregatedListInstanceGroupManagersRequest, AggregatedListInstanceGroupsRequest, @@ -516,11 +541,13 @@ CapacityHistoryAdviceRequest, CapacityHistoryRequest, CapacityHistoryRequestInstanceProperties, + CapacityHistoryRequestInstancePropertiesAttachedDisk, CapacityHistoryRequestInstancePropertiesScheduling, CapacityHistoryRequestLocationPolicy, CapacityHistoryResponse, CapacityHistoryResponsePreemptionRecord, CapacityHistoryResponsePriceRecord, + CapacityPool, CircuitBreakers, CloneRulesFirewallPolicyRequest, CloneRulesNetworkFirewallPolicyRequest, @@ -557,6 +584,7 @@ Data, Date, DateTime, + DeleteAcceleratorInterconnectRequest, DeleteAccessConfigInstanceRequest, DeleteAddressRequest, DeleteAutoscalerRequest, @@ -578,6 +606,7 @@ DeleteGlobalOrganizationOperationResponse, DeleteGlobalPublicDelegatedPrefixeRequest, DeleteGlobalVmExtensionPolicyRequest, + DeleteHaControllerRequest, DeleteHealthCheckRequest, DeleteImageRequest, DeleteInstanceGroupManagerRequest, @@ -717,6 +746,7 @@ ExternalVpnGatewayInterface, ExternalVpnGatewayList, ExternalVpnGatewayParams, + FailoverHaControllerRequest, FileContentBuffer, Firewall, FirewallList, @@ -764,6 +794,7 @@ FutureResourcesSpecLocationPolicyLocation, FutureResourcesSpecSpecificSKUResources, FutureResourcesSpecTargetResources, + GetAcceleratorInterconnectRequest, GetAcceleratorTypeRequest, GetAddressRequest, GetAssociationFirewallPolicyRequest, @@ -790,12 +821,14 @@ GetFutureReservationRequest, GetGlobalAddressRequest, GetGlobalForwardingRuleRequest, + GetGlobalFrontendSettingRequest, GetGlobalNetworkEndpointGroupRequest, GetGlobalOperationRequest, GetGlobalOrganizationOperationRequest, GetGlobalPublicDelegatedPrefixeRequest, GetGlobalVmExtensionPolicyRequest, GetGuestAttributesInstanceRequest, + GetHaControllerRequest, GetHealthBackendServiceRequest, GetHealthCheckRequest, GetHealthOperationMetadata, @@ -841,6 +874,7 @@ GetIamPolicySubnetworkRequest, GetImageFamilyViewRequest, GetImageRequest, + GetImageViewRequest, GetInstanceGroupManagerRequest, GetInstanceGroupManagerResizeRequestRequest, GetInstanceGroupRequest, @@ -860,6 +894,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetManagedRulesetRequest, GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, @@ -967,6 +1002,8 @@ GetZoneRequest, GetZoneVmExtensionPolicyRequest, GlobalAddressesMoveRequest, + GlobalFrontendSettings, + GlobalFrontendSettingsPatchResponse, GlobalNetworkEndpointGroupsAttachEndpointsRequest, GlobalNetworkEndpointGroupsDetachEndpointsRequest, GlobalOrganizationSetPolicyRequest, @@ -989,6 +1026,23 @@ GuestAttributesEntry, GuestAttributesValue, GuestOsFeature, + HaController, + HaControllerNetworkingAutoConfiguration, + HaControllerNetworkingAutoConfigurationInternal, + HaControllersAggregatedList, + HaControllersFailoverRequest, + HaControllersList, + HaControllersScopedList, + HaControllerStatus, + HaControllerStatusFailoverProgress, + HaControllerStatusFailoverProgressLastFailoverAttempt, + HaControllerStatusFailoverProgressLastFailoverAttemptErrors, + HaControllerStatusZoneStatus, + HaControllerStatusZoneStatusLastError, + HaControllerStatusZoneStatusLastErrorErrors, + HaControllerZoneConfiguration, + HaControllerZoneConfigurationNodeAffinity, + HaControllerZoneConfigurationReservationAffinity, HealthAggregationPoliciesScopedList, HealthAggregationPolicy, HealthAggregationPolicyAggregatedList, @@ -1040,7 +1094,10 @@ ImageFamilyView, ImageList, ImageParams, + ImageView, + ImageViewsListResponse, InitialStateConfig, + InsertAcceleratorInterconnectRequest, InsertAddressRequest, InsertAutoscalerRequest, InsertBackendBucketRequest, @@ -1057,6 +1114,7 @@ InsertGlobalNetworkEndpointGroupRequest, InsertGlobalPublicDelegatedPrefixeRequest, InsertGlobalVmExtensionPolicyRequest, + InsertHaControllerRequest, InsertHealthCheckRequest, InsertImageRequest, InsertInstanceGroupManagerRequest, @@ -1224,6 +1282,7 @@ InstancesSetSecurityPolicyRequest, InstancesSetServiceAccountRequest, InstancesStartWithEncryptionKeyRequest, + InstancesTroubleshootOperationMetadata, InstanceTemplate, InstanceTemplateAggregatedList, InstanceTemplateList, @@ -1315,6 +1374,7 @@ InterconnectRemoteLocationPermittedConnections, InterconnectsGetDiagnosticsResponse, InterconnectsGetMacsecConfigResponse, + InterconnectsSetNameRequest, Interval, InvalidateCacheUrlMapRequest, Items, @@ -1325,6 +1385,8 @@ LicenseResourceCommitment, LicenseResourceRequirements, LicensesListResponse, + ListAcceleratorInterconnectMemberInstancesRequest, + ListAcceleratorInterconnectsRequest, ListAcceleratorTypesRequest, ListAddressesRequest, ListAssociationsFirewallPolicyRequest, @@ -1353,9 +1415,11 @@ ListGlobalOrganizationOperationsRequest, ListGlobalPublicDelegatedPrefixesRequest, ListGlobalVmExtensionPoliciesRequest, + ListHaControllersRequest, ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -1377,6 +1441,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListManagedRulesetsRequest, ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, @@ -1493,6 +1558,8 @@ ManagedInstanceScheduling, ManagedInstanceShutdownDetails, ManagedInstanceVersion, + ManagedRuleset, + ManagedRulesetList, Metadata, MetadataFilter, MetadataFilterLabelMatch, @@ -1516,6 +1583,7 @@ NetworkAttachmentsScopedList, NetworkEdgeSecurityService, NetworkEdgeSecurityServiceAggregatedList, + NetworkEdgeSecurityServiceParams, NetworkEdgeSecurityServicesScopedList, NetworkEndpoint, NetworkEndpointGroup, @@ -1598,6 +1666,9 @@ PacketMirroringMirroredResourceInfoSubnetInfo, PacketMirroringNetworkInfo, PacketMirroringsScopedList, + PartitionFormability, + PartitionFormabilityStatus, + PatchAssociationRegionNetworkFirewallPolicyRequest, PatchAutoscalerRequest, PatchBackendBucketRequest, PatchBackendServiceRequest, @@ -1606,7 +1677,9 @@ PatchFirewallRequest, PatchForwardingRuleRequest, PatchGlobalForwardingRuleRequest, + PatchGlobalFrontendSettingRequest, PatchGlobalPublicDelegatedPrefixeRequest, + PatchHaControllerRequest, PatchHealthCheckRequest, PatchImageRequest, PatchInstanceGroupManagerRequest, @@ -1701,7 +1774,9 @@ PublicDelegatedPrefixesScopedList, PublicDelegatedPrefixList, PublicDelegatedPrefixPublicDelegatedSubPrefix, - Quota, + QueryFormabilityAcceleratorInterconnectsRequest, + QueryFormabilityRequest, + QueryFormabilityResponse, QuotaExceededInfo, QuotaStatusWarning, RawDisk, @@ -1780,6 +1855,8 @@ ReservationAffinity, ReservationAggregatedList, ReservationBlock, + ReservationBlockBlockDetailedHealthInfo, + ReservationBlockBlockStatus, ReservationBlockHealthInfo, ReservationBlockPhysicalTopology, ReservationBlockPhysicalTopologyInstance, @@ -1806,6 +1883,8 @@ ReservationSubBlocksListResponse, ReservationSubBlocksReportFaultyRequest, ReservationSubBlocksReportFaultyRequestFaultReason, + ReservationSubBlockSubBlockDetailedHealthInfo, + ReservationSubBlockSubBlockStatus, ResetInstanceRequest, ResizeDiskRequest, ResizeInstanceGroupManagerRequest, @@ -1922,6 +2001,7 @@ SecurityPolicyAssociation, SecurityPolicyDdosProtectionConfig, SecurityPolicyList, + SecurityPolicyParams, SecurityPolicyRecaptchaOptionsConfig, SecurityPolicyReference, SecurityPolicyRule, @@ -2030,6 +2110,7 @@ SetNamedPortsInstanceGroupRequest, SetNamedPortsRegionInstanceGroupRequest, SetNameInstanceRequest, + SetNameInterconnectRequest, SetNodeTemplateNodeGroupRequest, SetPrivateIpGoogleAccessSubnetworkRequest, SetProxyHeaderTargetSslProxyRequest, @@ -2371,6 +2452,16 @@ "AbandonInstancesInstanceGroupManagerRequest", "AbandonInstancesRegionInstanceGroupManagerRequest", "AcceleratorConfig", + "AcceleratorInterconnect", + "AcceleratorInterconnectAcceleratorInterconnectStatus", + "AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails", + "AcceleratorInterconnectMemberInstance", + "AcceleratorInterconnectMemberInstancesClient", + "AcceleratorInterconnectMemberInstancesListResponse", + "AcceleratorInterconnectParams", + "AcceleratorInterconnectsClient", + "AcceleratorInterconnectsInsertRequest", + "AcceleratorInterconnectsList", "AcceleratorTopologiesInfo", "AcceleratorTopologiesInfoAcceleratorTopologyInfo", "AcceleratorTopologiesInfoAcceleratorTopologyInfoInfoPerTopologyState", @@ -2423,6 +2514,7 @@ "AggregatedListFutureReservationsRequest", "AggregatedListGlobalOperationsRequest", "AggregatedListGlobalVmExtensionPoliciesRequest", + "AggregatedListHaControllersRequest", "AggregatedListHealthChecksRequest", "AggregatedListInstanceGroupManagersRequest", "AggregatedListInstanceGroupsRequest", @@ -2596,11 +2688,13 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", "CapacityHistoryResponsePreemptionRecord", "CapacityHistoryResponsePriceRecord", + "CapacityPool", "CircuitBreakers", "CloneRulesFirewallPolicyRequest", "CloneRulesNetworkFirewallPolicyRequest", @@ -2638,6 +2732,7 @@ "Data", "Date", "DateTime", + "DeleteAcceleratorInterconnectRequest", "DeleteAccessConfigInstanceRequest", "DeleteAddressRequest", "DeleteAutoscalerRequest", @@ -2659,6 +2754,7 @@ "DeleteGlobalOrganizationOperationResponse", "DeleteGlobalPublicDelegatedPrefixeRequest", "DeleteGlobalVmExtensionPolicyRequest", + "DeleteHaControllerRequest", "DeleteHealthCheckRequest", "DeleteImageRequest", "DeleteInstanceGroupManagerRequest", @@ -2801,6 +2897,7 @@ "ExternalVpnGatewayList", "ExternalVpnGatewayParams", "ExternalVpnGatewaysClient", + "FailoverHaControllerRequest", "FileContentBuffer", "Firewall", "FirewallList", @@ -2854,6 +2951,7 @@ "FutureResourcesSpecTargetResources", "GRPCHealthCheck", "GRPCTLSHealthCheck", + "GetAcceleratorInterconnectRequest", "GetAcceleratorTypeRequest", "GetAddressRequest", "GetAssociationFirewallPolicyRequest", @@ -2880,12 +2978,14 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", "GetGlobalPublicDelegatedPrefixeRequest", "GetGlobalVmExtensionPolicyRequest", "GetGuestAttributesInstanceRequest", + "GetHaControllerRequest", "GetHealthBackendServiceRequest", "GetHealthCheckRequest", "GetHealthOperationMetadata", @@ -2931,6 +3031,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -2950,6 +3051,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -3059,6 +3161,9 @@ "GlobalAddressesClient", "GlobalAddressesMoveRequest", "GlobalForwardingRulesClient", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", + "GlobalFrontendSettingsServiceClient", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsClient", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", @@ -3087,6 +3192,24 @@ "HTTP2HealthCheck", "HTTPHealthCheck", "HTTPSHealthCheck", + "HaController", + "HaControllerNetworkingAutoConfiguration", + "HaControllerNetworkingAutoConfigurationInternal", + "HaControllerStatus", + "HaControllerStatusFailoverProgress", + "HaControllerStatusFailoverProgressLastFailoverAttempt", + "HaControllerStatusFailoverProgressLastFailoverAttemptErrors", + "HaControllerStatusZoneStatus", + "HaControllerStatusZoneStatusLastError", + "HaControllerStatusZoneStatusLastErrorErrors", + "HaControllerZoneConfiguration", + "HaControllerZoneConfigurationNodeAffinity", + "HaControllerZoneConfigurationReservationAffinity", + "HaControllersAggregatedList", + "HaControllersClient", + "HaControllersFailoverRequest", + "HaControllersList", + "HaControllersScopedList", "HealthAggregationPoliciesScopedList", "HealthAggregationPolicy", "HealthAggregationPolicyAggregatedList", @@ -3138,8 +3261,12 @@ "ImageFamilyViewsClient", "ImageList", "ImageParams", + "ImageView", + "ImageViewsClient", + "ImageViewsListResponse", "ImagesClient", "InitialStateConfig", + "InsertAcceleratorInterconnectRequest", "InsertAddressRequest", "InsertAutoscalerRequest", "InsertBackendBucketRequest", @@ -3156,6 +3283,7 @@ "InsertGlobalNetworkEndpointGroupRequest", "InsertGlobalPublicDelegatedPrefixeRequest", "InsertGlobalVmExtensionPolicyRequest", + "InsertHaControllerRequest", "InsertHealthCheckRequest", "InsertImageRequest", "InsertInstanceGroupManagerRequest", @@ -3334,6 +3462,7 @@ "InstancesSetSecurityPolicyRequest", "InstancesSetServiceAccountRequest", "InstancesStartWithEncryptionKeyRequest", + "InstancesTroubleshootOperationMetadata", "InstantSnapshot", "InstantSnapshotAggregatedList", "InstantSnapshotGroup", @@ -3428,6 +3557,7 @@ "InterconnectsClient", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -3440,6 +3570,8 @@ "LicenseResourceRequirements", "LicensesClient", "LicensesListResponse", + "ListAcceleratorInterconnectMemberInstancesRequest", + "ListAcceleratorInterconnectsRequest", "ListAcceleratorTypesRequest", "ListAddressesRequest", "ListAssociationsFirewallPolicyRequest", @@ -3468,8 +3600,10 @@ "ListGlobalOrganizationOperationsRequest", "ListGlobalPublicDelegatedPrefixesRequest", "ListGlobalVmExtensionPoliciesRequest", + "ListHaControllersRequest", "ListHealthChecksRequest", "ListHostsRequest", + "ListImageViewsRequest", "ListImagesRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", @@ -3492,6 +3626,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -3610,6 +3745,9 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", + "ManagedRulesetsClient", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -3634,6 +3772,7 @@ "NetworkAttachmentsScopedList", "NetworkEdgeSecurityService", "NetworkEdgeSecurityServiceAggregatedList", + "NetworkEdgeSecurityServiceParams", "NetworkEdgeSecurityServicesClient", "NetworkEdgeSecurityServicesScopedList", "NetworkEndpoint", @@ -3726,6 +3865,9 @@ "PacketMirroringNetworkInfo", "PacketMirroringsClient", "PacketMirroringsScopedList", + "PartitionFormability", + "PartitionFormabilityStatus", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -3734,7 +3876,9 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", + "PatchHaControllerRequest", "PatchHealthCheckRequest", "PatchImageRequest", "PatchInstanceGroupManagerRequest", @@ -3834,7 +3978,9 @@ "PublicDelegatedPrefixPublicDelegatedSubPrefix", "PublicDelegatedPrefixesClient", "PublicDelegatedPrefixesScopedList", - "Quota", + "QueryFormabilityAcceleratorInterconnectsRequest", + "QueryFormabilityRequest", + "QueryFormabilityResponse", "QuotaExceededInfo", "QuotaStatusWarning", "RawDisk", @@ -3947,6 +4093,8 @@ "ReservationAffinity", "ReservationAggregatedList", "ReservationBlock", + "ReservationBlockBlockDetailedHealthInfo", + "ReservationBlockBlockStatus", "ReservationBlockHealthInfo", "ReservationBlockPhysicalTopology", "ReservationBlockPhysicalTopologyInstance", @@ -3966,6 +4114,8 @@ "ReservationSubBlock", "ReservationSubBlockHealthInfo", "ReservationSubBlockPhysicalTopology", + "ReservationSubBlockSubBlockDetailedHealthInfo", + "ReservationSubBlockSubBlockStatus", "ReservationSubBlocksClient", "ReservationSubBlocksGetResponse", "ReservationSubBlocksGetVersionRequest", @@ -4100,6 +4250,7 @@ "SecurityPolicyAssociation", "SecurityPolicyDdosProtectionConfig", "SecurityPolicyList", + "SecurityPolicyParams", "SecurityPolicyRecaptchaOptionsConfig", "SecurityPolicyReference", "SecurityPolicyRule", @@ -4207,6 +4358,7 @@ "SetMetadataInstanceRequest", "SetMinCpuPlatformInstanceRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNodeTemplateNodeGroupRequest", diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json b/preview-packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json index 85d4758279d6..05887c713289 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/gapic_metadata.json @@ -5,7 +5,58 @@ "protoPackage": "google.cloud.compute.v1", "schema": "1.0", "services": { + "AcceleratorInterconnectMemberInstances": { + "apiVersion": "2026-10-01-preview", + "clients": { + "rest": { + "libraryClient": "AcceleratorInterconnectMemberInstancesClient", + "rpcs": { + "List": { + "methods": [ + "list" + ] + } + } + } + } + }, + "AcceleratorInterconnects": { + "apiVersion": "2026-10-01-preview", + "clients": { + "rest": { + "libraryClient": "AcceleratorInterconnectsClient", + "rpcs": { + "Delete": { + "methods": [ + "delete" + ] + }, + "Get": { + "methods": [ + "get" + ] + }, + "Insert": { + "methods": [ + "insert" + ] + }, + "List": { + "methods": [ + "list" + ] + }, + "QueryFormability": { + "methods": [ + "query_formability" + ] + } + } + } + } + }, "AcceleratorTypes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "AcceleratorTypesClient", @@ -30,6 +81,7 @@ } }, "Addresses": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "AddressesClient", @@ -79,6 +131,7 @@ } }, "Advice": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "AdviceClient", @@ -103,6 +156,7 @@ } }, "Autoscalers": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "AutoscalersClient", @@ -152,6 +206,7 @@ } }, "BackendBuckets": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "BackendBucketsClient", @@ -231,6 +286,7 @@ } }, "BackendServices": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "BackendServicesClient", @@ -325,6 +381,7 @@ } }, "CrossSiteNetworks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "CrossSiteNetworksClient", @@ -359,6 +416,7 @@ } }, "DiskTypes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "DiskTypesClient", @@ -383,6 +441,7 @@ } }, "Disks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "DisksClient", @@ -492,6 +551,7 @@ } }, "ExternalVpnGateways": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ExternalVpnGatewaysClient", @@ -531,6 +591,7 @@ } }, "FirewallPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "FirewallPoliciesClient", @@ -630,6 +691,7 @@ } }, "Firewalls": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "FirewallsClient", @@ -674,6 +736,7 @@ } }, "ForwardingRules": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ForwardingRulesClient", @@ -723,6 +786,7 @@ } }, "FutureReservations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "FutureReservationsClient", @@ -767,6 +831,7 @@ } }, "GlobalAddresses": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalAddressesClient", @@ -811,6 +876,7 @@ } }, "GlobalForwardingRules": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalForwardingRulesClient", @@ -854,7 +920,28 @@ } } }, + "GlobalFrontendSettingsService": { + "apiVersion": "2026-10-01-preview", + "clients": { + "rest": { + "libraryClient": "GlobalFrontendSettingsServiceClient", + "rpcs": { + "Get": { + "methods": [ + "get" + ] + }, + "Patch": { + "methods": [ + "patch" + ] + } + } + } + } + }, "GlobalNetworkEndpointGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalNetworkEndpointGroupsClient", @@ -899,6 +986,7 @@ } }, "GlobalOperations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalOperationsClient", @@ -933,6 +1021,7 @@ } }, "GlobalOrganizationOperations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalOrganizationOperationsClient", @@ -957,6 +1046,7 @@ } }, "GlobalPublicDelegatedPrefixes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalPublicDelegatedPrefixesClient", @@ -991,6 +1081,7 @@ } }, "GlobalVmExtensionPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "GlobalVmExtensionPoliciesClient", @@ -1029,7 +1120,53 @@ } } }, + "HaControllers": { + "apiVersion": "2026-10-01-preview", + "clients": { + "rest": { + "libraryClient": "HaControllersClient", + "rpcs": { + "AggregatedList": { + "methods": [ + "aggregated_list" + ] + }, + "Delete": { + "methods": [ + "delete" + ] + }, + "Failover": { + "methods": [ + "failover" + ] + }, + "Get": { + "methods": [ + "get" + ] + }, + "Insert": { + "methods": [ + "insert" + ] + }, + "List": { + "methods": [ + "list" + ] + }, + "Patch": { + "methods": [ + "patch" + ] + } + } + } + } + }, "HealthChecks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "HealthChecksClient", @@ -1079,6 +1216,7 @@ } }, "Hosts": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "HostsClient", @@ -1103,6 +1241,7 @@ } }, "ImageFamilyViews": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ImageFamilyViewsClient", @@ -1116,7 +1255,28 @@ } } }, + "ImageViews": { + "apiVersion": "2026-10-01-preview", + "clients": { + "rest": { + "libraryClient": "ImageViewsClient", + "rpcs": { + "Get": { + "methods": [ + "get" + ] + }, + "List": { + "methods": [ + "list" + ] + } + } + } + } + }, "Images": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ImagesClient", @@ -1181,6 +1341,7 @@ } }, "InstanceGroupManagerResizeRequests": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstanceGroupManagerResizeRequestsClient", @@ -1215,6 +1376,7 @@ } }, "InstanceGroupManagers": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstanceGroupManagersClient", @@ -1344,6 +1506,7 @@ } }, "InstanceGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstanceGroupsClient", @@ -1403,6 +1566,7 @@ } }, "InstanceSettingsService": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstanceSettingsServiceClient", @@ -1422,6 +1586,7 @@ } }, "InstanceTemplates": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstanceTemplatesClient", @@ -1471,6 +1636,7 @@ } }, "Instances": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstancesClient", @@ -1735,6 +1901,7 @@ } }, "InstantSnapshotGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstantSnapshotGroupsClient", @@ -1779,6 +1946,7 @@ } }, "InstantSnapshots": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InstantSnapshotsClient", @@ -1833,6 +2001,7 @@ } }, "InterconnectAttachmentGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InterconnectAttachmentGroupsClient", @@ -1887,6 +2056,7 @@ } }, "InterconnectAttachments": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InterconnectAttachmentsClient", @@ -1931,6 +2101,7 @@ } }, "InterconnectGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InterconnectGroupsClient", @@ -1990,6 +2161,7 @@ } }, "InterconnectLocations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InterconnectLocationsClient", @@ -2009,6 +2181,7 @@ } }, "InterconnectRemoteLocations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InterconnectRemoteLocationsClient", @@ -2028,6 +2201,7 @@ } }, "Interconnects": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "InterconnectsClient", @@ -2071,12 +2245,18 @@ "methods": [ "set_labels" ] + }, + "SetName": { + "methods": [ + "set_name" + ] } } } } }, "LicenseCodes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "LicenseCodesClient", @@ -2106,6 +2286,7 @@ } }, "Licenses": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "LicensesClient", @@ -2155,6 +2336,7 @@ } }, "MachineImages": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "MachineImagesClient", @@ -2204,6 +2386,7 @@ } }, "MachineTypes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "MachineTypesClient", @@ -2227,7 +2410,28 @@ } } }, + "ManagedRulesets": { + "apiVersion": "2026-10-01-preview", + "clients": { + "rest": { + "libraryClient": "ManagedRulesetsClient", + "rpcs": { + "Get": { + "methods": [ + "get" + ] + }, + "List": { + "methods": [ + "list" + ] + } + } + } + } + }, "NetworkAttachments": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NetworkAttachmentsClient", @@ -2282,6 +2486,7 @@ } }, "NetworkEdgeSecurityServices": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NetworkEdgeSecurityServicesClient", @@ -2316,6 +2521,7 @@ } }, "NetworkEndpointGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NetworkEndpointGroupsClient", @@ -2370,6 +2576,7 @@ } }, "NetworkFirewallPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NetworkFirewallPoliciesClient", @@ -2484,6 +2691,7 @@ } }, "NetworkProfiles": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NetworkProfilesClient", @@ -2503,6 +2711,7 @@ } }, "Networks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NetworksClient", @@ -2577,6 +2786,7 @@ } }, "NodeGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NodeGroupsClient", @@ -2661,6 +2871,7 @@ } }, "NodeTemplates": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NodeTemplatesClient", @@ -2710,6 +2921,7 @@ } }, "NodeTypes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "NodeTypesClient", @@ -2734,6 +2946,7 @@ } }, "OrganizationSecurityPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "OrganizationSecurityPoliciesClient", @@ -2823,6 +3036,7 @@ } }, "PacketMirrorings": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "PacketMirroringsClient", @@ -2867,6 +3081,7 @@ } }, "PreviewFeatures": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "PreviewFeaturesClient", @@ -2891,6 +3106,7 @@ } }, "ProjectViews": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ProjectViewsClient", @@ -2905,6 +3121,7 @@ } }, "Projects": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ProjectsClient", @@ -2984,6 +3201,7 @@ } }, "PublicAdvertisedPrefixes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "PublicAdvertisedPrefixesClient", @@ -3028,6 +3246,7 @@ } }, "PublicDelegatedPrefixes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "PublicDelegatedPrefixesClient", @@ -3077,6 +3296,7 @@ } }, "RegionAutoscalers": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionAutoscalersClient", @@ -3121,6 +3341,7 @@ } }, "RegionBackendBuckets": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionBackendBucketsClient", @@ -3175,6 +3396,7 @@ } }, "RegionBackendServices": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionBackendServicesClient", @@ -3244,6 +3466,7 @@ } }, "RegionCommitments": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionCommitmentsClient", @@ -3278,6 +3501,7 @@ } }, "RegionCompositeHealthChecks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionCompositeHealthChecksClient", @@ -3327,6 +3551,7 @@ } }, "RegionDiskTypes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionDiskTypesClient", @@ -3346,6 +3571,7 @@ } }, "RegionDisks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionDisksClient", @@ -3445,6 +3671,7 @@ } }, "RegionHealthAggregationPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionHealthAggregationPoliciesClient", @@ -3489,6 +3716,7 @@ } }, "RegionHealthCheckServices": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionHealthCheckServicesClient", @@ -3533,6 +3761,7 @@ } }, "RegionHealthChecks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionHealthChecksClient", @@ -3577,6 +3806,7 @@ } }, "RegionHealthSources": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionHealthSourcesClient", @@ -3626,6 +3856,7 @@ } }, "RegionInstanceGroupManagerResizeRequests": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstanceGroupManagerResizeRequestsClient", @@ -3660,6 +3891,7 @@ } }, "RegionInstanceGroupManagers": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstanceGroupManagersClient", @@ -3784,6 +4016,7 @@ } }, "RegionInstanceGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstanceGroupsClient", @@ -3818,6 +4051,7 @@ } }, "RegionInstanceTemplates": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstanceTemplatesClient", @@ -3847,6 +4081,7 @@ } }, "RegionInstances": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstancesClient", @@ -3861,6 +4096,7 @@ } }, "RegionInstantSnapshotGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstantSnapshotGroupsClient", @@ -3905,6 +4141,7 @@ } }, "RegionInstantSnapshots": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionInstantSnapshotsClient", @@ -3954,6 +4191,7 @@ } }, "RegionNetworkEndpointGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionNetworkEndpointGroupsClient", @@ -3998,6 +4236,7 @@ } }, "RegionNetworkFirewallPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionNetworkFirewallPoliciesClient", @@ -4062,6 +4301,11 @@ "patch" ] }, + "PatchAssociation": { + "methods": [ + "patch_association" + ] + }, "PatchRule": { "methods": [ "patch_rule" @@ -4092,6 +4336,7 @@ } }, "RegionNotificationEndpoints": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionNotificationEndpointsClient", @@ -4131,6 +4376,7 @@ } }, "RegionOperations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionOperationsClient", @@ -4160,6 +4406,7 @@ } }, "RegionSecurityPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionSecurityPoliciesClient", @@ -4219,6 +4466,7 @@ } }, "RegionSnapshotSettings": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionSnapshotSettingsClient", @@ -4238,6 +4486,7 @@ } }, "RegionSnapshots": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionSnapshotsClient", @@ -4292,6 +4541,7 @@ } }, "RegionSslCertificates": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionSslCertificatesClient", @@ -4321,6 +4571,7 @@ } }, "RegionSslPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionSslPoliciesClient", @@ -4360,6 +4611,7 @@ } }, "RegionTargetHttpProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionTargetHttpProxiesClient", @@ -4394,6 +4646,7 @@ } }, "RegionTargetHttpsProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionTargetHttpsProxiesClient", @@ -4438,6 +4691,7 @@ } }, "RegionTargetTcpProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionTargetTcpProxiesClient", @@ -4467,6 +4721,7 @@ } }, "RegionUrlMaps": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionUrlMapsClient", @@ -4511,6 +4766,7 @@ } }, "RegionZones": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionZonesClient", @@ -4525,6 +4781,7 @@ } }, "Regions": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RegionsClient", @@ -4544,6 +4801,7 @@ } }, "ReliabilityRisks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ReliabilityRisksClient", @@ -4563,6 +4821,7 @@ } }, "ReservationBlocks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ReservationBlocksClient", @@ -4602,6 +4861,7 @@ } }, "ReservationSlots": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ReservationSlotsClient", @@ -4636,6 +4896,7 @@ } }, "ReservationSubBlocks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ReservationSubBlocksClient", @@ -4685,6 +4946,7 @@ } }, "Reservations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ReservationsClient", @@ -4749,6 +5011,7 @@ } }, "ResourcePolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ResourcePoliciesClient", @@ -4803,6 +5066,7 @@ } }, "RolloutPlans": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RolloutPlansClient", @@ -4832,6 +5096,7 @@ } }, "Rollouts": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RolloutsClient", @@ -4876,6 +5141,7 @@ } }, "Routers": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RoutersClient", @@ -4995,6 +5261,7 @@ } }, "Routes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "RoutesClient", @@ -5029,6 +5296,7 @@ } }, "SecurityPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "SecurityPoliciesClient", @@ -5098,6 +5366,7 @@ } }, "ServiceAttachments": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ServiceAttachmentsClient", @@ -5152,6 +5421,7 @@ } }, "SnapshotSettingsService": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "SnapshotSettingsServiceClient", @@ -5171,6 +5441,7 @@ } }, "Snapshots": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "SnapshotsClient", @@ -5225,6 +5496,7 @@ } }, "SslCertificates": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "SslCertificatesClient", @@ -5259,6 +5531,7 @@ } }, "SslPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "SslPoliciesClient", @@ -5303,6 +5576,7 @@ } }, "StoragePoolTypes": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "StoragePoolTypesClient", @@ -5327,6 +5601,7 @@ } }, "StoragePools": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "StoragePoolsClient", @@ -5386,6 +5661,7 @@ } }, "Subnetworks": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "SubnetworksClient", @@ -5455,6 +5731,7 @@ } }, "TargetGrpcProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetGrpcProxiesClient", @@ -5489,6 +5766,7 @@ } }, "TargetHttpProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetHttpProxiesClient", @@ -5533,6 +5811,7 @@ } }, "TargetHttpsProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetHttpsProxiesClient", @@ -5597,6 +5876,7 @@ } }, "TargetInstances": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetInstancesClient", @@ -5641,6 +5921,7 @@ } }, "TargetPools": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetPoolsClient", @@ -5715,6 +5996,7 @@ } }, "TargetSslProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetSslProxiesClient", @@ -5774,6 +6056,7 @@ } }, "TargetTcpProxies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetTcpProxiesClient", @@ -5823,6 +6106,7 @@ } }, "TargetVpnGateways": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "TargetVpnGatewaysClient", @@ -5862,6 +6146,7 @@ } }, "UrlMaps": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "UrlMapsClient", @@ -5921,6 +6206,7 @@ } }, "VpnGateways": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "VpnGatewaysClient", @@ -5970,6 +6256,7 @@ } }, "VpnTunnels": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "VpnTunnelsClient", @@ -6009,6 +6296,7 @@ } }, "WireGroups": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "WireGroupsClient", @@ -6043,6 +6331,7 @@ } }, "ZoneOperations": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ZoneOperationsClient", @@ -6072,6 +6361,7 @@ } }, "ZoneVmExtensionPolicies": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ZoneVmExtensionPoliciesClient", @@ -6106,6 +6396,7 @@ } }, "Zones": { + "apiVersion": "2026-10-01-preview", "clients": { "rest": { "libraryClient": "ZonesClient", diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/__init__.py new file mode 100644 index 000000000000..a21029f36150 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 AcceleratorInterconnectMemberInstancesClient + +__all__ = ("AcceleratorInterconnectMemberInstancesClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/client.py new file mode 100644 index 000000000000..95c7a775468b --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/client.py @@ -0,0 +1,784 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.services.accelerator_interconnect_member_instances import ( + pagers, +) +from google.cloud.compute_v1.types import compute + +from .transports.base import ( + DEFAULT_CLIENT_INFO, + AcceleratorInterconnectMemberInstancesTransport, +) +from .transports.rest import AcceleratorInterconnectMemberInstancesRestTransport + + +class AcceleratorInterconnectMemberInstancesClientMeta(type): + """Metaclass for the AcceleratorInterconnectMemberInstances 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[AcceleratorInterconnectMemberInstancesTransport]] + _transport_registry["rest"] = AcceleratorInterconnectMemberInstancesRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[AcceleratorInterconnectMemberInstancesTransport]: + """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 AcceleratorInterconnectMemberInstancesClient( + metaclass=AcceleratorInterconnectMemberInstancesClientMeta +): + """Services + + The AcceleratorInterconnectMemberInstances API. + This class implements API version 2026-10-01-preview.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + AcceleratorInterconnectMemberInstancesClient: 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: + AcceleratorInterconnectMemberInstancesClient: 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) -> AcceleratorInterconnectMemberInstancesTransport: + """Returns the transport used by the client instance. + + Returns: + AcceleratorInterconnectMemberInstancesTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, + AcceleratorInterconnectMemberInstancesTransport, + Callable[..., AcceleratorInterconnectMemberInstancesTransport], + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the accelerator interconnect member instances 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,AcceleratorInterconnectMemberInstancesTransport,Callable[..., AcceleratorInterconnectMemberInstancesTransport]]]): + 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 AcceleratorInterconnectMemberInstancesTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ( + AcceleratorInterconnectMemberInstancesClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=AcceleratorInterconnectMemberInstancesClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, AcceleratorInterconnectMemberInstancesTransport + ) + if transport_provided: + # transport is a AcceleratorInterconnectMemberInstancesTransport 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( + AcceleratorInterconnectMemberInstancesTransport, transport + ) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=AcceleratorInterconnectMemberInstancesClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=AcceleratorInterconnectMemberInstancesClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=AcceleratorInterconnectMemberInstancesClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[AcceleratorInterconnectMemberInstancesTransport], + Callable[..., AcceleratorInterconnectMemberInstancesTransport], + ] = ( + AcceleratorInterconnectMemberInstancesClient.get_transport_class( + transport + ) + if isinstance(transport, str) or transport is None + else cast( + Callable[..., AcceleratorInterconnectMemberInstancesTransport], + 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_v1.AcceleratorInterconnectMemberInstancesClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnectMemberInstances", + "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.v1.AcceleratorInterconnectMemberInstances", + "credentialsType": None, + }, + ) + + def list( + self, + request: Optional[ + Union[compute.ListAcceleratorInterconnectMemberInstancesRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + accelerator_interconnect: 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"""Lists member instances of the + AcceleratorInterconnect. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.AcceleratorInterconnectMemberInstancesClient() + + # Initialize request argument(s) + request = compute_v1.ListAcceleratorInterconnectMemberInstancesRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_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_v1.types.ListAcceleratorInterconnectMemberInstancesRequest, dict]): + The request object. A request message for + AcceleratorInterconnectMemberInstances.List. + See the method description for details. + project (str): + Project ID for the request. + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + zone (str): + Zone where the + AcceleratorInterconnect is located. Zone + name should conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + accelerator_interconnect (str): + Name of the parent + AcceleratorInterconnect. The name should + conform to RFC1035 or be a resource ID. + + This corresponds to the ``accelerator_interconnect`` 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_v1.services.accelerator_interconnect_member_instances.pagers.ListPager: + Response message for + AcceleratorInterconnectMemberInstances.List. + 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, zone, accelerator_interconnect] + 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.ListAcceleratorInterconnectMemberInstancesRequest + ): + request = compute.ListAcceleratorInterconnectMemberInstancesRequest(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 accelerator_interconnect is not None: + request.accelerator_interconnect = accelerator_interconnect + + # 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), + ("zone", request.zone), + ("accelerator_interconnect", request.accelerator_interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 __enter__(self) -> "AcceleratorInterconnectMemberInstancesClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("AcceleratorInterconnectMemberInstancesClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/pagers.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/pagers.py new file mode 100644 index 000000000000..cccc650819c5 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/pagers.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.AcceleratorInterconnectMemberInstancesListResponse` 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_v1.types.AcceleratorInterconnectMemberInstancesListResponse` + 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.AcceleratorInterconnectMemberInstancesListResponse + ], + request: compute.ListAcceleratorInterconnectMemberInstancesRequest, + response: compute.AcceleratorInterconnectMemberInstancesListResponse, + *, + 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_v1.types.ListAcceleratorInterconnectMemberInstancesRequest): + The initial request object. + response (google.cloud.compute_v1.types.AcceleratorInterconnectMemberInstancesListResponse): + 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.ListAcceleratorInterconnectMemberInstancesRequest( + 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.AcceleratorInterconnectMemberInstancesListResponse]: + 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.AcceleratorInterconnectMemberInstance]: + 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/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/README.rst b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/README.rst new file mode 100644 index 000000000000..b48666b2a1b2 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``AcceleratorInterconnectMemberInstancesTransport`` is the ABC for all transports. + +- public child ``AcceleratorInterconnectMemberInstancesGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``AcceleratorInterconnectMemberInstancesGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseAcceleratorInterconnectMemberInstancesRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``AcceleratorInterconnectMemberInstancesRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/__init__.py new file mode 100644 index 000000000000..8c406ac957f8 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 AcceleratorInterconnectMemberInstancesTransport +from .rest import ( + AcceleratorInterconnectMemberInstancesRestInterceptor, + AcceleratorInterconnectMemberInstancesRestTransport, +) + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[AcceleratorInterconnectMemberInstancesTransport]] +_transport_registry["rest"] = AcceleratorInterconnectMemberInstancesRestTransport + +__all__ = ( + "AcceleratorInterconnectMemberInstancesTransport", + "AcceleratorInterconnectMemberInstancesRestTransport", + "AcceleratorInterconnectMemberInstancesRestInterceptor", +) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/base.py new file mode 100644 index 000000000000..88bd0257d2ee --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/base.py @@ -0,0 +1,190 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class AcceleratorInterconnectMemberInstancesTransport(abc.ABC): + """Abstract transport class for AcceleratorInterconnectMemberInstances.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/compute.readonly", + "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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + 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 list( + self, + ) -> Callable[ + [compute.ListAcceleratorInterconnectMemberInstancesRequest], + Union[ + compute.AcceleratorInterconnectMemberInstancesListResponse, + Awaitable[compute.AcceleratorInterconnectMemberInstancesListResponse], + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("AcceleratorInterconnectMemberInstancesTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest.py new file mode 100644 index 000000000000..66d6589cc41a --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest.py @@ -0,0 +1,418 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseAcceleratorInterconnectMemberInstancesRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class AcceleratorInterconnectMemberInstancesRestInterceptor: + """Interceptor for AcceleratorInterconnectMemberInstances. + + 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 AcceleratorInterconnectMemberInstancesRestTransport. + + .. code-block:: python + class MyCustomAcceleratorInterconnectMemberInstancesInterceptor(AcceleratorInterconnectMemberInstancesRestInterceptor): + 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 + + transport = AcceleratorInterconnectMemberInstancesRestTransport(interceptor=MyCustomAcceleratorInterconnectMemberInstancesInterceptor()) + client = AcceleratorInterconnectMemberInstancesClient(transport=transport) + + + """ + + def pre_list( + self, + request: compute.ListAcceleratorInterconnectMemberInstancesRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListAcceleratorInterconnectMemberInstancesRequest, + 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 AcceleratorInterconnectMemberInstances server. + """ + return request, metadata + + def post_list( + self, response: compute.AcceleratorInterconnectMemberInstancesListResponse + ) -> compute.AcceleratorInterconnectMemberInstancesListResponse: + """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 AcceleratorInterconnectMemberInstances 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.AcceleratorInterconnectMemberInstancesListResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.AcceleratorInterconnectMemberInstancesListResponse, + 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 AcceleratorInterconnectMemberInstances 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 + + +@dataclasses.dataclass +class AcceleratorInterconnectMemberInstancesRestStub: + _session: AuthorizedSession + _host: str + _interceptor: AcceleratorInterconnectMemberInstancesRestInterceptor + + +class AcceleratorInterconnectMemberInstancesRestTransport( + _BaseAcceleratorInterconnectMemberInstancesRestTransport +): + """REST backend synchronous transport for AcceleratorInterconnectMemberInstances. + + Services + + The AcceleratorInterconnectMemberInstances 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[ + AcceleratorInterconnectMemberInstancesRestInterceptor + ] = 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. + interceptor (Optional[AcceleratorInterconnectMemberInstancesRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 AcceleratorInterconnectMemberInstancesRestInterceptor() + ) + self._prep_wrapped_messages(client_info) + + class _List( + _BaseAcceleratorInterconnectMemberInstancesRestTransport._BaseList, + AcceleratorInterconnectMemberInstancesRestStub, + ): + def __hash__(self): + return hash("AcceleratorInterconnectMemberInstancesRestTransport.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.ListAcceleratorInterconnectMemberInstancesRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.AcceleratorInterconnectMemberInstancesListResponse: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListAcceleratorInterconnectMemberInstancesRequest): + The request object. A request message for + AcceleratorInterconnectMemberInstances.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.AcceleratorInterconnectMemberInstancesListResponse: + Response message for + AcceleratorInterconnectMemberInstances.List. + + """ + + http_options = _BaseAcceleratorInterconnectMemberInstancesRestTransport._BaseList._get_http_options() + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseAcceleratorInterconnectMemberInstancesRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.AcceleratorInterconnectMemberInstancesClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnectMemberInstances", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + AcceleratorInterconnectMemberInstancesRestTransport._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.AcceleratorInterconnectMemberInstancesListResponse() + pb_resp = compute.AcceleratorInterconnectMemberInstancesListResponse.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.AcceleratorInterconnectMemberInstancesListResponse.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_v1.AcceleratorInterconnectMemberInstancesClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnectMemberInstances", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def list( + self, + ) -> Callable[ + [compute.ListAcceleratorInterconnectMemberInstancesRequest], + compute.AcceleratorInterconnectMemberInstancesListResponse, + ]: + # 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 kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("AcceleratorInterconnectMemberInstancesRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest_base.py new file mode 100644 index 000000000000..f2c26e58ac37 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnect_member_instances/transports/rest_base.py @@ -0,0 +1,109 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, AcceleratorInterconnectMemberInstancesTransport + + +class _BaseAcceleratorInterconnectMemberInstancesRestTransport( + AcceleratorInterconnectMemberInstancesTransport +): + """Base REST backend transport for AcceleratorInterconnectMemberInstances. + + 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 _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}/memberInstances", + }, + ] + return http_options + + +__all__ = ("_BaseAcceleratorInterconnectMemberInstancesRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/__init__.py new file mode 100644 index 000000000000..a622d56f3cc2 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 AcceleratorInterconnectsClient + +__all__ = ("AcceleratorInterconnectsClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/client.py new file mode 100644 index 000000000000..977fab385558 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/client.py @@ -0,0 +1,1695 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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_v1.services.accelerator_interconnects import pagers +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, AcceleratorInterconnectsTransport +from .transports.rest import AcceleratorInterconnectsRestTransport + + +class AcceleratorInterconnectsClientMeta(type): + """Metaclass for the AcceleratorInterconnects 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[AcceleratorInterconnectsTransport]] + _transport_registry["rest"] = AcceleratorInterconnectsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[AcceleratorInterconnectsTransport]: + """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 AcceleratorInterconnectsClient(metaclass=AcceleratorInterconnectsClientMeta): + """The AcceleratorInterconnects API. This class implements API version 2026-10-01-preview.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + AcceleratorInterconnectsClient: 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: + AcceleratorInterconnectsClient: 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) -> AcceleratorInterconnectsTransport: + """Returns the transport used by the client instance. + + Returns: + AcceleratorInterconnectsTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, + AcceleratorInterconnectsTransport, + Callable[..., AcceleratorInterconnectsTransport], + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the accelerator interconnects 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,AcceleratorInterconnectsTransport,Callable[..., AcceleratorInterconnectsTransport]]]): + 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 AcceleratorInterconnectsTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ( + AcceleratorInterconnectsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=AcceleratorInterconnectsClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, AcceleratorInterconnectsTransport) + if transport_provided: + # transport is a AcceleratorInterconnectsTransport 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(AcceleratorInterconnectsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=AcceleratorInterconnectsClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=AcceleratorInterconnectsClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=AcceleratorInterconnectsClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[AcceleratorInterconnectsTransport], + Callable[..., AcceleratorInterconnectsTransport], + ] = ( + AcceleratorInterconnectsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., AcceleratorInterconnectsTransport], 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_v1.AcceleratorInterconnectsClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "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.v1.AcceleratorInterconnects", + "credentialsType": None, + }, + ) + + def delete_unary( + self, + request: Optional[ + Union[compute.DeleteAcceleratorInterconnectRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + accelerator_interconnect: 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 accelerator interconnect. + + .. 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_v1 + + def sample_delete(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.DeleteAcceleratorInterconnectRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.DeleteAcceleratorInterconnectRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.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. + zone (str): + The name of thezone where the + accelerator interconnect is located. + Zone name should conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + accelerator_interconnect (str): + The name of the accelerator + interconnect to delete. Name should + conform to RFC1035. + + This corresponds to the ``accelerator_interconnect`` 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, accelerator_interconnect] + 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.DeleteAcceleratorInterconnectRequest): + request = compute.DeleteAcceleratorInterconnectRequest(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 accelerator_interconnect is not None: + request.accelerator_interconnect = accelerator_interconnect + + # 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), + ("zone", request.zone), + ("accelerator_interconnect", request.accelerator_interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.DeleteAcceleratorInterconnectRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + accelerator_interconnect: 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 accelerator interconnect. + + .. 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_v1 + + def sample_delete(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.DeleteAcceleratorInterconnectRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.DeleteAcceleratorInterconnectRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.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. + zone (str): + The name of thezone where the + accelerator interconnect is located. + Zone name should conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + accelerator_interconnect (str): + The name of the accelerator + interconnect to delete. Name should + conform to RFC1035. + + This corresponds to the ``accelerator_interconnect`` 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, accelerator_interconnect] + 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.DeleteAcceleratorInterconnectRequest): + request = compute.DeleteAcceleratorInterconnectRequest(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 accelerator_interconnect is not None: + request.accelerator_interconnect = accelerator_interconnect + + # 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), + ("zone", request.zone), + ("accelerator_interconnect", request.accelerator_interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 get( + self, + request: Optional[ + Union[compute.GetAcceleratorInterconnectRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + accelerator_interconnect: 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.AcceleratorInterconnect: + r"""Returns all of the details about the specified + accelerator interconnect. + + .. 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.GetAcceleratorInterconnectRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetAcceleratorInterconnectRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.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. + zone (str): + The name of thezone where the + accelerator interconnect is located. + Zone name should conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + accelerator_interconnect (str): + The name of the accelerator + interconnect. Name should conform to + RFC1035. + + This corresponds to the ``accelerator_interconnect`` 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_v1.types.AcceleratorInterconnect: + Represents an Accelerator + Interconnect resource. + + """ + # 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, accelerator_interconnect] + 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.GetAcceleratorInterconnectRequest): + request = compute.GetAcceleratorInterconnectRequest(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 accelerator_interconnect is not None: + request.accelerator_interconnect = accelerator_interconnect + + # 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), + ("zone", request.zone), + ("accelerator_interconnect", request.accelerator_interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.InsertAcceleratorInterconnectRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + accelerator_interconnects_insert_request_resource: Optional[ + compute.AcceleratorInterconnectsInsertRequest + ] = 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 an accelerator interconnect using the + information that you specify 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_v1 + + def sample_insert(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.InsertAcceleratorInterconnectRequest( + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.InsertAcceleratorInterconnectRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.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. + zone (str): + The name of the zone + where you want to create the accelerator + interconnect. Zone name should conform + to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + accelerator_interconnects_insert_request_resource (google.cloud.compute_v1.types.AcceleratorInterconnectsInsertRequest): + The body resource for this request + This corresponds to the ``accelerator_interconnects_insert_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, + accelerator_interconnects_insert_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.InsertAcceleratorInterconnectRequest): + request = compute.InsertAcceleratorInterconnectRequest(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 accelerator_interconnects_insert_request_resource is not None: + request.accelerator_interconnects_insert_request_resource = ( + accelerator_interconnects_insert_request_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), + ("zone", request.zone), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.InsertAcceleratorInterconnectRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + accelerator_interconnects_insert_request_resource: Optional[ + compute.AcceleratorInterconnectsInsertRequest + ] = 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 an accelerator interconnect using the + information that you specify 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_v1 + + def sample_insert(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.InsertAcceleratorInterconnectRequest( + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.InsertAcceleratorInterconnectRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.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. + zone (str): + The name of the zone + where you want to create the accelerator + interconnect. Zone name should conform + to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + accelerator_interconnects_insert_request_resource (google.cloud.compute_v1.types.AcceleratorInterconnectsInsertRequest): + The body resource for this request + This corresponds to the ``accelerator_interconnects_insert_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, + accelerator_interconnects_insert_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.InsertAcceleratorInterconnectRequest): + request = compute.InsertAcceleratorInterconnectRequest(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 accelerator_interconnects_insert_request_resource is not None: + request.accelerator_interconnects_insert_request_resource = ( + accelerator_interconnects_insert_request_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), + ("zone", request.zone), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 list( + self, + request: Optional[ + Union[compute.ListAcceleratorInterconnectsRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: 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 accelerator interconnects that + are contained within the specified project and zone. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.ListAcceleratorInterconnectsRequest( + project="project_value", + zone="zone_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_v1.types.ListAcceleratorInterconnectsRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.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. + zone (str): + The name of thezone where the + accelerator interconnect is located. + Zone name should conform to RFC1035. + + This corresponds to the ``zone`` 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_v1.services.accelerator_interconnects.pagers.ListPager: + Response message for + AcceleratorInterconnects.List. + 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, zone] + 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.ListAcceleratorInterconnectsRequest): + request = compute.ListAcceleratorInterconnectsRequest(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 + + # 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), + ("zone", request.zone), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 query_formability( + self, + request: Optional[ + Union[compute.QueryFormabilityAcceleratorInterconnectsRequest, dict] + ] = None, + *, + project: Optional[str] = None, + zone: Optional[str] = None, + query_formability_request_resource: Optional[ + compute.QueryFormabilityRequest + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> pagers.QueryFormabilityPager: + r"""Queries hierarchical formability over dense + reservations. + + .. 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_v1 + + def sample_query_formability(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.QueryFormabilityAcceleratorInterconnectsRequest( + project="project_value", + zone="zone_value", + ) + + # Make the request + page_result = client.query_formability(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.QueryFormabilityAcceleratorInterconnectsRequest, dict]): + The request object. A request message for + AcceleratorInterconnects.QueryFormability. + 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 + request is located. Zone name should + conform to RFC1035. + + This corresponds to the ``zone`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + query_formability_request_resource (google.cloud.compute_v1.types.QueryFormabilityRequest): + The body resource for this request + This corresponds to the ``query_formability_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_v1.services.accelerator_interconnects.pagers.QueryFormabilityPager: + Response message for + AcceleratorInterconnects.QueryFormability. + 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, zone, query_formability_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.QueryFormabilityAcceleratorInterconnectsRequest + ): + request = compute.QueryFormabilityAcceleratorInterconnectsRequest(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 query_formability_request_resource is not None: + request.query_formability_request_resource = ( + query_formability_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.query_formability] + + # 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), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.QueryFormabilityPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def __enter__(self) -> "AcceleratorInterconnectsClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("AcceleratorInterconnectsClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/pagers.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/pagers.py new file mode 100644 index 000000000000..4624eea1f49c --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/pagers.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.AcceleratorInterconnectsList` 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_v1.types.AcceleratorInterconnectsList` + 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.AcceleratorInterconnectsList], + request: compute.ListAcceleratorInterconnectsRequest, + response: compute.AcceleratorInterconnectsList, + *, + 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_v1.types.ListAcceleratorInterconnectsRequest): + The initial request object. + response (google.cloud.compute_v1.types.AcceleratorInterconnectsList): + 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.ListAcceleratorInterconnectsRequest(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.AcceleratorInterconnectsList]: + 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.AcceleratorInterconnect]: + for page in self.pages: + yield from page.items + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class QueryFormabilityPager: + """A pager for iterating through ``query_formability`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.QueryFormabilityResponse` object, and + provides an ``__iter__`` method to iterate through its + ``items`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``QueryFormability`` requests and continue to iterate + through the ``items`` field on the + corresponding responses. + + All the usual :class:`google.cloud.compute_v1.types.QueryFormabilityResponse` + 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.QueryFormabilityResponse], + request: compute.QueryFormabilityAcceleratorInterconnectsRequest, + response: compute.QueryFormabilityResponse, + *, + 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_v1.types.QueryFormabilityAcceleratorInterconnectsRequest): + The initial request object. + response (google.cloud.compute_v1.types.QueryFormabilityResponse): + 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.QueryFormabilityAcceleratorInterconnectsRequest(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.QueryFormabilityResponse]: + 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.PartitionFormability]: + 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/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/README.rst b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/README.rst new file mode 100644 index 000000000000..60a3d3c73dc2 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``AcceleratorInterconnectsTransport`` is the ABC for all transports. + +- public child ``AcceleratorInterconnectsGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``AcceleratorInterconnectsGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseAcceleratorInterconnectsRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``AcceleratorInterconnectsRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/__init__.py new file mode 100644 index 000000000000..35704a35def2 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 AcceleratorInterconnectsTransport +from .rest import ( + AcceleratorInterconnectsRestInterceptor, + AcceleratorInterconnectsRestTransport, +) + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[AcceleratorInterconnectsTransport]] +_transport_registry["rest"] = AcceleratorInterconnectsRestTransport + +__all__ = ( + "AcceleratorInterconnectsTransport", + "AcceleratorInterconnectsRestTransport", + "AcceleratorInterconnectsRestInterceptor", +) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/base.py new file mode 100644 index 000000000000..3ecea74a6979 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/base.py @@ -0,0 +1,274 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.services import zone_operations +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class AcceleratorInterconnectsTransport(abc.ABC): + """Abstract transport class for AcceleratorInterconnects.""" + + 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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @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=600.0, + client_info=client_info, + ), + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.insert: gapic_v1.method.wrap_method( + self.insert, + default_timeout=600.0, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.query_formability: gapic_v1.method.wrap_method( + self.query_formability, + default_timeout=600.0, + 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.DeleteAcceleratorInterconnectRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def get( + self, + ) -> Callable[ + [compute.GetAcceleratorInterconnectRequest], + Union[ + compute.AcceleratorInterconnect, Awaitable[compute.AcceleratorInterconnect] + ], + ]: + raise NotImplementedError() + + @property + def insert( + self, + ) -> Callable[ + [compute.InsertAcceleratorInterconnectRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListAcceleratorInterconnectsRequest], + Union[ + compute.AcceleratorInterconnectsList, + Awaitable[compute.AcceleratorInterconnectsList], + ], + ]: + raise NotImplementedError() + + @property + def query_formability( + self, + ) -> Callable[ + [compute.QueryFormabilityAcceleratorInterconnectsRequest], + Union[ + compute.QueryFormabilityResponse, + Awaitable[compute.QueryFormabilityResponse], + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + @property + def _zone_operations_client(self) -> zone_operations.ZoneOperationsClient: + ex_op_service = self._extended_operations_services.get("zone_operations") + if not ex_op_service: + ex_op_service = zone_operations.ZoneOperationsClient( + credentials=self._credentials, + transport=self.kind, + ) + self._extended_operations_services["zone_operations"] = ex_op_service + + return ex_op_service + + +__all__ = ("AcceleratorInterconnectsTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest.py new file mode 100644 index 000000000000..2c89a03fea43 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest.py @@ -0,0 +1,1326 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseAcceleratorInterconnectsRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class AcceleratorInterconnectsRestInterceptor: + """Interceptor for AcceleratorInterconnects. + + 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 AcceleratorInterconnectsRestTransport. + + .. code-block:: python + class MyCustomAcceleratorInterconnectsInterceptor(AcceleratorInterconnectsRestInterceptor): + 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_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_query_formability(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_query_formability(self, response): + logging.log(f"Received response: {response}") + return response + + transport = AcceleratorInterconnectsRestTransport(interceptor=MyCustomAcceleratorInterconnectsInterceptor()) + client = AcceleratorInterconnectsClient(transport=transport) + + + """ + + def pre_delete( + self, + request: compute.DeleteAcceleratorInterconnectRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.DeleteAcceleratorInterconnectRequest, + 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 AcceleratorInterconnects 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 AcceleratorInterconnects 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 AcceleratorInterconnects 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.GetAcceleratorInterconnectRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetAcceleratorInterconnectRequest, + 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 AcceleratorInterconnects server. + """ + return request, metadata + + def post_get( + self, response: compute.AcceleratorInterconnect + ) -> compute.AcceleratorInterconnect: + """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 AcceleratorInterconnects 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.AcceleratorInterconnect, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.AcceleratorInterconnect, 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 AcceleratorInterconnects 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_insert( + self, + request: compute.InsertAcceleratorInterconnectRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.InsertAcceleratorInterconnectRequest, + 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 AcceleratorInterconnects 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 AcceleratorInterconnects 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 AcceleratorInterconnects 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.ListAcceleratorInterconnectsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListAcceleratorInterconnectsRequest, + 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 AcceleratorInterconnects server. + """ + return request, metadata + + def post_list( + self, response: compute.AcceleratorInterconnectsList + ) -> compute.AcceleratorInterconnectsList: + """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 AcceleratorInterconnects 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.AcceleratorInterconnectsList, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.AcceleratorInterconnectsList, 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 AcceleratorInterconnects 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_query_formability( + self, + request: compute.QueryFormabilityAcceleratorInterconnectsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.QueryFormabilityAcceleratorInterconnectsRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for query_formability + + Override in a subclass to manipulate the request or metadata + before they are sent to the AcceleratorInterconnects server. + """ + return request, metadata + + def post_query_formability( + self, response: compute.QueryFormabilityResponse + ) -> compute.QueryFormabilityResponse: + """Post-rpc interceptor for query_formability + + DEPRECATED. Please use the `post_query_formability_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the AcceleratorInterconnects server but before + it is returned to user code. This `post_query_formability` interceptor runs + before the `post_query_formability_with_metadata` interceptor. + """ + return response + + def post_query_formability_with_metadata( + self, + response: compute.QueryFormabilityResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.QueryFormabilityResponse, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for query_formability + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the AcceleratorInterconnects server but before it is returned to user code. + + We recommend only using this `post_query_formability_with_metadata` + interceptor in new development instead of the `post_query_formability` interceptor. + When both interceptors are used, this `post_query_formability_with_metadata` interceptor runs after the + `post_query_formability` interceptor. The (possibly modified) response returned by + `post_query_formability` will be passed to + `post_query_formability_with_metadata`. + """ + return response, metadata + + +@dataclasses.dataclass +class AcceleratorInterconnectsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: AcceleratorInterconnectsRestInterceptor + + +class AcceleratorInterconnectsRestTransport(_BaseAcceleratorInterconnectsRestTransport): + """REST backend synchronous transport for AcceleratorInterconnects. + + The AcceleratorInterconnects 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[AcceleratorInterconnectsRestInterceptor] = 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. + interceptor (Optional[AcceleratorInterconnectsRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 AcceleratorInterconnectsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _Delete( + _BaseAcceleratorInterconnectsRestTransport._BaseDelete, + AcceleratorInterconnectsRestStub, + ): + def __hash__(self): + return hash("AcceleratorInterconnectsRestTransport.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.DeleteAcceleratorInterconnectRequest, + *, + 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.DeleteAcceleratorInterconnectRequest): + The request object. A request message for + AcceleratorInterconnects.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 = _BaseAcceleratorInterconnectsRestTransport._BaseDelete._get_http_options() + request, metadata = self._interceptor.pre_delete(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseAcceleratorInterconnectsRestTransport._BaseDelete, + "_BaseDelete__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.AcceleratorInterconnectsClient.Delete", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "Delete", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = AcceleratorInterconnectsRestTransport._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_v1.AcceleratorInterconnectsClient.delete", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "Delete", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Get( + _BaseAcceleratorInterconnectsRestTransport._BaseGet, + AcceleratorInterconnectsRestStub, + ): + def __hash__(self): + return hash("AcceleratorInterconnectsRestTransport.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.GetAcceleratorInterconnectRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.AcceleratorInterconnect: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetAcceleratorInterconnectRequest): + The request object. A request message for + AcceleratorInterconnects.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.AcceleratorInterconnect: + Represents an Accelerator + Interconnect resource. + + """ + + http_options = ( + _BaseAcceleratorInterconnectsRestTransport._BaseGet._get_http_options() + ) + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseAcceleratorInterconnectsRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.AcceleratorInterconnectsClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = AcceleratorInterconnectsRestTransport._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.AcceleratorInterconnect() + pb_resp = compute.AcceleratorInterconnect.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.AcceleratorInterconnect.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_v1.AcceleratorInterconnectsClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Insert( + _BaseAcceleratorInterconnectsRestTransport._BaseInsert, + AcceleratorInterconnectsRestStub, + ): + def __hash__(self): + return hash("AcceleratorInterconnectsRestTransport.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.InsertAcceleratorInterconnectRequest, + *, + 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.InsertAcceleratorInterconnectRequest): + The request object. A request message for + AcceleratorInterconnects.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 = _BaseAcceleratorInterconnectsRestTransport._BaseInsert._get_http_options() + request, metadata = self._interceptor.pre_insert(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseAcceleratorInterconnectsRestTransport._BaseInsert, + "_BaseInsert__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.AcceleratorInterconnectsClient.Insert", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "Insert", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = AcceleratorInterconnectsRestTransport._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_v1.AcceleratorInterconnectsClient.insert", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "Insert", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List( + _BaseAcceleratorInterconnectsRestTransport._BaseList, + AcceleratorInterconnectsRestStub, + ): + def __hash__(self): + return hash("AcceleratorInterconnectsRestTransport.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.ListAcceleratorInterconnectsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.AcceleratorInterconnectsList: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListAcceleratorInterconnectsRequest): + The request object. A request message for + AcceleratorInterconnects.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.AcceleratorInterconnectsList: + Response message for + AcceleratorInterconnects.List. + + """ + + http_options = ( + _BaseAcceleratorInterconnectsRestTransport._BaseList._get_http_options() + ) + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseAcceleratorInterconnectsRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.AcceleratorInterconnectsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = AcceleratorInterconnectsRestTransport._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.AcceleratorInterconnectsList() + pb_resp = compute.AcceleratorInterconnectsList.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.AcceleratorInterconnectsList.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_v1.AcceleratorInterconnectsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _QueryFormability( + _BaseAcceleratorInterconnectsRestTransport._BaseQueryFormability, + AcceleratorInterconnectsRestStub, + ): + def __hash__(self): + return hash("AcceleratorInterconnectsRestTransport.QueryFormability") + + @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.QueryFormabilityAcceleratorInterconnectsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.QueryFormabilityResponse: + r"""Call the query formability method over HTTP. + + Args: + request (~.compute.QueryFormabilityAcceleratorInterconnectsRequest): + The request object. A request message for + AcceleratorInterconnects.QueryFormability. + 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.QueryFormabilityResponse: + Response message for + AcceleratorInterconnects.QueryFormability. + + """ + + http_options = _BaseAcceleratorInterconnectsRestTransport._BaseQueryFormability._get_http_options() + request, metadata = self._interceptor.pre_query_formability( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseAcceleratorInterconnectsRestTransport._BaseQueryFormability, + "_BaseQueryFormability__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.AcceleratorInterconnectsClient.QueryFormability", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "QueryFormability", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ( + AcceleratorInterconnectsRestTransport._QueryFormability._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.QueryFormabilityResponse() + pb_resp = compute.QueryFormabilityResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_query_formability(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_query_formability_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.QueryFormabilityResponse.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_v1.AcceleratorInterconnectsClient.query_formability", + extra={ + "serviceName": "google.cloud.compute.v1.AcceleratorInterconnects", + "rpcName": "QueryFormability", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def delete( + self, + ) -> Callable[[compute.DeleteAcceleratorInterconnectRequest], 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.GetAcceleratorInterconnectRequest], compute.AcceleratorInterconnect + ]: + # 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 insert( + self, + ) -> Callable[[compute.InsertAcceleratorInterconnectRequest], 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.ListAcceleratorInterconnectsRequest], + compute.AcceleratorInterconnectsList, + ]: + # 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 query_formability( + self, + ) -> Callable[ + [compute.QueryFormabilityAcceleratorInterconnectsRequest], + compute.QueryFormabilityResponse, + ]: + # 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._QueryFormability(self._session, self._host, self._interceptor) # type: ignore + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("AcceleratorInterconnectsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest_base.py new file mode 100644 index 000000000000..c52ade84f323 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_interconnects/transports/rest_base.py @@ -0,0 +1,173 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, AcceleratorInterconnectsTransport + + +class _BaseAcceleratorInterconnectsRestTransport(AcceleratorInterconnectsTransport): + """Base REST backend transport for AcceleratorInterconnects. + + 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] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "delete", + "uri": "/compute/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}", + }, + ] + return http_options + + class _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}", + }, + ] + return http_options + + class _BaseInsert: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/zones/{zone}/acceleratorInterconnects", + "body": "accelerator_interconnects_insert_request_resource", + }, + ] + return http_options + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/zones/{zone}/acceleratorInterconnects", + }, + ] + return http_options + + class _BaseQueryFormability: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/zones/{zone}/acceleratorInterconnects:queryFormability", + "body": "query_formability_request_resource", + }, + ] + return http_options + + +__all__ = ("_BaseAcceleratorInterconnectsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py index a52f393b9c62..cb4186eaa257 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,10 +116,7 @@ def get_transport_class( class AcceleratorTypesClient(metaclass=AcceleratorTypesClientMeta): - """Services - - The AcceleratorTypes API. - """ + """The AcceleratorTypes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -673,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +834,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +967,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/transports/rest.py index 73ee14fc29fb..9bd32dc9622e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/transports/rest.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/accelerator_types/transports/rest.py @@ -258,8 +258,6 @@ class AcceleratorTypesRestStub: class AcceleratorTypesRestTransport(_BaseAcceleratorTypesRestTransport): """REST backend synchronous transport for AcceleratorTypes. - Services - The AcceleratorTypes API. This class defines the same methods as the primary client, so the diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py index 5b3604c437ff..33737501a1d6 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/addresses/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class AddressesClient(metaclass=AddressesClientMeta): - """The Addresses API.""" + """The Addresses API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1111,6 +1133,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1371,6 +1403,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1521,6 +1558,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1681,6 +1723,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1830,6 +1877,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2006,6 +2058,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2157,6 +2214,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2333,6 +2395,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py index 74f0493fad1b..f0a0f5f8145f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/advice/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class AdviceClient(metaclass=AdviceClientMeta): - """The Advice API.""" + """The Advice API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -693,6 +700,11 @@ def sample_calendar_mode(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -828,6 +840,11 @@ def sample_capacity(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_capacity_history(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py index 0134a0cba336..da0839b21a3f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/autoscalers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class AutoscalersClient(metaclass=AutoscalersClientMeta): - """The Autoscalers API.""" + """The Autoscalers API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -941,6 +958,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1112,6 +1134,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1242,6 +1269,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1372,6 +1404,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1523,6 +1560,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1666,6 +1708,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1798,6 +1845,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1971,6 +2023,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2101,6 +2158,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2231,6 +2293,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py index b126f5545e61..ede15326f547 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_buckets/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class BackendBucketsClient(metaclass=BackendBucketsClientMeta): - """The BackendBuckets API.""" + """The BackendBuckets API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -692,6 +699,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -828,6 +840,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -969,6 +986,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1226,6 +1253,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1389,6 +1421,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1528,6 +1565,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1679,6 +1721,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1831,6 +1878,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1947,6 +1999,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2063,6 +2120,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2199,6 +2261,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2320,6 +2387,11 @@ def sample_list_usable(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2465,6 +2537,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2599,6 +2676,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2762,6 +2844,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2901,6 +2988,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3089,6 +3181,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3225,6 +3322,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3357,6 +3459,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3489,6 +3596,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py index 4a3ebaf605a8..22874673bd34 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/backend_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class BackendServicesClient(metaclass=BackendServicesClientMeta): - """The BackendServices API.""" + """The BackendServices API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -694,6 +701,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -830,6 +842,11 @@ def sample_add_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -973,6 +990,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1107,6 +1129,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1230,6 +1257,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1393,6 +1425,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1532,6 +1569,11 @@ def sample_delete_signed_url_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1696,6 +1738,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1827,6 +1874,11 @@ def sample_get_effective_security_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1967,6 +2019,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2121,6 +2178,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2238,6 +2300,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2355,6 +2422,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2491,6 +2563,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2617,6 +2694,11 @@ def sample_list_usable(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2763,6 +2845,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2898,6 +2985,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3066,6 +3158,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3210,6 +3307,11 @@ def sample_set_edge_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3400,6 +3502,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3544,6 +3651,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3688,6 +3800,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3848,6 +3965,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3981,6 +4103,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4114,6 +4241,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py index d787527c5fe3..72c29481979a 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/cross_site_networks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class CrossSiteNetworksClient(metaclass=CrossSiteNetworksClientMeta): - """The CrossSiteNetworks API.""" + """The CrossSiteNetworks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -685,6 +692,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -809,6 +821,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -961,6 +978,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1078,6 +1100,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1195,6 +1222,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1331,6 +1363,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1476,6 +1513,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1652,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py index 120c43bdc498..0052d9852584 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disk_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class DiskTypesClient(metaclass=DiskTypesClientMeta): - """The DiskTypes API.""" + """The DiskTypes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -665,6 +672,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -824,6 +836,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -951,6 +968,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py index 6461e11d8d22..6cc60fd4137f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/disks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class DisksClient(metaclass=DisksClientMeta): - """The Disks API.""" + """The Disks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -708,6 +715,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -860,6 +872,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -997,6 +1014,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1143,6 +1165,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1278,6 +1305,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1439,6 +1471,11 @@ def sample_bulk_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1575,6 +1612,11 @@ def sample_bulk_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1747,6 +1789,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1894,6 +1941,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2057,6 +2109,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2195,6 +2252,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2372,6 +2434,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2536,6 +2603,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2672,6 +2744,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2808,6 +2885,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2960,6 +3042,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3123,6 +3210,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3275,6 +3367,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3441,6 +3538,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3582,6 +3684,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3781,6 +3888,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3927,6 +4039,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4073,6 +4190,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4249,6 +4371,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4400,6 +4527,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4560,6 +4692,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4695,6 +4832,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4867,6 +5009,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5014,6 +5161,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5185,6 +5337,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5327,6 +5484,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5469,6 +5631,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5643,6 +5810,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5792,6 +5964,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py index e2fc671f6383..7fdbad343ea4 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/external_vpn_gateways/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ExternalVpnGatewaysClient(metaclass=ExternalVpnGatewaysClientMeta): - """The ExternalVpnGateways API.""" + """The ExternalVpnGateways API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -684,6 +691,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -807,6 +819,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -972,6 +989,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1088,6 +1110,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1204,6 +1231,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1340,6 +1372,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1490,6 +1527,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1629,6 +1671,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1789,6 +1836,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py index 75ee94bbe744..7c39540bca42 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewall_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class FirewallPoliciesClient(metaclass=FirewallPoliciesClientMeta): - """The FirewallPolicies API.""" + """The FirewallPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -685,6 +692,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -811,6 +823,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1072,6 +1094,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1206,6 +1233,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1317,6 +1349,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1451,6 +1488,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1562,6 +1604,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1694,6 +1741,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1805,6 +1857,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1945,6 +2002,11 @@ def sample_get_iam_policy(): gapic_v1.routing_header.to_grpc_metadata((("resource", request.resource),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2058,6 +2120,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2159,6 +2226,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2260,6 +2332,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2365,6 +2442,11 @@ def sample_list(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2455,6 +2537,11 @@ def sample_list_associations(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list_associations] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2566,6 +2653,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2677,6 +2769,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2821,6 +2918,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2941,6 +3043,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3083,6 +3190,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3202,6 +3314,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3339,6 +3456,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3453,6 +3575,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3587,6 +3714,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3698,6 +3830,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3873,6 +4010,11 @@ def sample_set_iam_policy(): gapic_v1.routing_header.to_grpc_metadata((("resource", request.resource),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3995,6 +4137,11 @@ def sample_test_iam_permissions(): gapic_v1.routing_header.to_grpc_metadata((("resource", request.resource),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py index 353a1397d44a..546e90d40382 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/firewalls/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class FirewallsClient(metaclass=FirewallsClientMeta): - """The Firewalls API.""" + """The Firewalls API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -677,6 +684,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -798,6 +810,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -946,6 +963,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1062,6 +1084,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1178,6 +1205,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1313,6 +1345,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1456,6 +1493,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1588,6 +1630,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1748,6 +1795,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1881,6 +1933,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2014,6 +2071,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py index b8d170a86fd2..b0425ecf77ac 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/forwarding_rules/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ForwardingRulesClient(metaclass=ForwardingRulesClientMeta): - """The ForwardingRules API.""" + """The ForwardingRules API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -672,6 +679,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1127,6 +1149,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1260,6 +1287,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1393,6 +1425,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1546,6 +1583,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1703,6 +1745,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1849,6 +1896,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2026,6 +2078,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2178,6 +2235,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2347,6 +2409,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2491,6 +2558,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py index 4487b44fc88a..fe084d775c2e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/future_reservations/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class FutureReservationsClient(metaclass=FutureReservationsClientMeta): - """The FutureReservations API.""" + """The FutureReservations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -677,6 +684,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -824,6 +836,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -960,6 +977,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1121,6 +1143,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1257,6 +1284,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1417,6 +1449,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1548,6 +1585,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1679,6 +1721,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1830,6 +1877,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1989,6 +2041,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2137,6 +2194,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py index 04a1a39ec2ee..035faac23820 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_addresses/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class GlobalAddressesClient(metaclass=GlobalAddressesClientMeta): - """The GlobalAddresses API.""" + """The GlobalAddresses API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -804,6 +816,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -960,6 +977,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1076,6 +1098,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1192,6 +1219,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1327,6 +1359,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1474,6 +1511,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1652,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1770,6 +1817,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1906,6 +1958,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2066,6 +2123,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py index 49ff0cc96dde..cbf016f1afff 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_forwarding_rules/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class GlobalForwardingRulesClient(metaclass=GlobalForwardingRulesClientMeta): - """The GlobalForwardingRules API.""" + """The GlobalForwardingRules API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -686,6 +693,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -811,6 +823,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -974,6 +991,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1093,6 +1115,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1212,6 +1239,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1348,6 +1380,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1493,6 +1530,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1627,6 +1669,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1790,6 +1837,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1929,6 +1981,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2088,6 +2145,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2223,6 +2285,11 @@ def sample_set_target(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py new file mode 100644 index 000000000000..97600e68304c --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 GlobalFrontendSettingsServiceClient + +__all__ = ("GlobalFrontendSettingsServiceClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py new file mode 100644 index 000000000000..f6286d21cb33 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/client.py @@ -0,0 +1,852 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, GlobalFrontendSettingsServiceTransport +from .transports.rest import GlobalFrontendSettingsServiceRestTransport + + +class GlobalFrontendSettingsServiceClientMeta(type): + """Metaclass for the GlobalFrontendSettingsService 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[GlobalFrontendSettingsServiceTransport]] + _transport_registry["rest"] = GlobalFrontendSettingsServiceRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[GlobalFrontendSettingsServiceTransport]: + """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 GlobalFrontendSettingsServiceClient( + metaclass=GlobalFrontendSettingsServiceClientMeta +): + """The GlobalFrontendSettings API. This class implements API version 2026-10-01-preview.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + GlobalFrontendSettingsServiceClient: 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: + GlobalFrontendSettingsServiceClient: 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) -> GlobalFrontendSettingsServiceTransport: + """Returns the transport used by the client instance. + + Returns: + GlobalFrontendSettingsServiceTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, + GlobalFrontendSettingsServiceTransport, + Callable[..., GlobalFrontendSettingsServiceTransport], + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the global frontend settings service 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,GlobalFrontendSettingsServiceTransport,Callable[..., GlobalFrontendSettingsServiceTransport]]]): + 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 GlobalFrontendSettingsServiceTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ( + GlobalFrontendSettingsServiceClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=GlobalFrontendSettingsServiceClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, GlobalFrontendSettingsServiceTransport + ) + if transport_provided: + # transport is a GlobalFrontendSettingsServiceTransport 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(GlobalFrontendSettingsServiceTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=GlobalFrontendSettingsServiceClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=GlobalFrontendSettingsServiceClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=GlobalFrontendSettingsServiceClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[GlobalFrontendSettingsServiceTransport], + Callable[..., GlobalFrontendSettingsServiceTransport], + ] = ( + GlobalFrontendSettingsServiceClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast( + Callable[..., GlobalFrontendSettingsServiceTransport], 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_v1.GlobalFrontendSettingsServiceClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "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.v1.GlobalFrontendSettingsService", + "credentialsType": None, + }, + ) + + def get( + self, + request: Optional[Union[compute.GetGlobalFrontendSettingRequest, 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]]] = (), + ) -> compute.GlobalFrontendSettings: + r"""Gets the Global Frontend Billing Bundle Settings for + a 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.GetGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetGlobalFrontendSettingRequest, dict]): + The request object. A request message for + GlobalFrontendSettingsService.Get. See + the method description for details. + project (str): + Required. 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_v1.types.GlobalFrontendSettings: + Represents the Global Frontend Bundle + settings for a single project. + + """ + # 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.GetGlobalFrontendSettingRequest): + request = compute.GetGlobalFrontendSettingRequest(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.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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 patch( + self, + request: Optional[ + Union[compute.PatchGlobalFrontendSettingRequest, dict] + ] = None, + *, + project: Optional[str] = None, + global_frontend_settings_resource: Optional[ + compute.GlobalFrontendSettings + ] = None, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Union[float, object] = gapic_v1.method.DEFAULT, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.GlobalFrontendSettingsPatchResponse: + r"""Updates the Global Frontend Billing Bundle Settings + for a 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_v1 + + def sample_patch(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.PatchGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchGlobalFrontendSettingRequest, dict]): + The request object. A request message for + GlobalFrontendSettingsService.Patch. See + the method description for details. + project (str): + Required. Project ID for this + request. + + This corresponds to the ``project`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + global_frontend_settings_resource (google.cloud.compute_v1.types.GlobalFrontendSettings): + The body resource for this request + This corresponds to the ``global_frontend_settings_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_v1.types.GlobalFrontendSettingsPatchResponse: + Response to an + UpdateGlobalFrontendSettingsRequest. + + """ + # 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, global_frontend_settings_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.PatchGlobalFrontendSettingRequest): + request = compute.PatchGlobalFrontendSettingRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if global_frontend_settings_resource is not None: + request.global_frontend_settings_resource = ( + global_frontend_settings_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch] + + # 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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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) -> "GlobalFrontendSettingsServiceClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("GlobalFrontendSettingsServiceClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst new file mode 100644 index 000000000000..b497b03c147d --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``GlobalFrontendSettingsServiceTransport`` is the ABC for all transports. + +- public child ``GlobalFrontendSettingsServiceGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``GlobalFrontendSettingsServiceGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseGlobalFrontendSettingsServiceRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``GlobalFrontendSettingsServiceRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py new file mode 100644 index 000000000000..a1123b1d5591 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 GlobalFrontendSettingsServiceTransport +from .rest import ( + GlobalFrontendSettingsServiceRestInterceptor, + GlobalFrontendSettingsServiceRestTransport, +) + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[GlobalFrontendSettingsServiceTransport]] +_transport_registry["rest"] = GlobalFrontendSettingsServiceRestTransport + +__all__ = ( + "GlobalFrontendSettingsServiceTransport", + "GlobalFrontendSettingsServiceRestTransport", + "GlobalFrontendSettingsServiceRestInterceptor", +) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py new file mode 100644 index 000000000000..edc1b9ae4643 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/base.py @@ -0,0 +1,205 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class GlobalFrontendSettingsServiceTransport(abc.ABC): + """Abstract transport class for GlobalFrontendSettingsService.""" + + 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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.patch: gapic_v1.method.wrap_method( + self.patch, + default_timeout=600.0, + 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 get( + self, + ) -> Callable[ + [compute.GetGlobalFrontendSettingRequest], + Union[ + compute.GlobalFrontendSettings, Awaitable[compute.GlobalFrontendSettings] + ], + ]: + raise NotImplementedError() + + @property + def patch( + self, + ) -> Callable[ + [compute.PatchGlobalFrontendSettingRequest], + Union[ + compute.GlobalFrontendSettingsPatchResponse, + Awaitable[compute.GlobalFrontendSettingsPatchResponse], + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("GlobalFrontendSettingsServiceTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py new file mode 100644 index 000000000000..cd4b74820c51 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest.py @@ -0,0 +1,626 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseGlobalFrontendSettingsServiceRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class GlobalFrontendSettingsServiceRestInterceptor: + """Interceptor for GlobalFrontendSettingsService. + + 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 GlobalFrontendSettingsServiceRestTransport. + + .. code-block:: python + class MyCustomGlobalFrontendSettingsServiceInterceptor(GlobalFrontendSettingsServiceRestInterceptor): + 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_patch(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_patch(self, response): + logging.log(f"Received response: {response}") + return response + + transport = GlobalFrontendSettingsServiceRestTransport(interceptor=MyCustomGlobalFrontendSettingsServiceInterceptor()) + client = GlobalFrontendSettingsServiceClient(transport=transport) + + + """ + + def pre_get( + self, + request: compute.GetGlobalFrontendSettingRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetGlobalFrontendSettingRequest, 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 GlobalFrontendSettingsService server. + """ + return request, metadata + + def post_get( + self, response: compute.GlobalFrontendSettings + ) -> compute.GlobalFrontendSettings: + """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 GlobalFrontendSettingsService 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.GlobalFrontendSettings, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.GlobalFrontendSettings, 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 GlobalFrontendSettingsService 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_patch( + self, + request: compute.PatchGlobalFrontendSettingRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.PatchGlobalFrontendSettingRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for patch + + Override in a subclass to manipulate the request or metadata + before they are sent to the GlobalFrontendSettingsService server. + """ + return request, metadata + + def post_patch( + self, response: compute.GlobalFrontendSettingsPatchResponse + ) -> compute.GlobalFrontendSettingsPatchResponse: + """Post-rpc interceptor for patch + + DEPRECATED. Please use the `post_patch_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the GlobalFrontendSettingsService server but before + it is returned to user code. This `post_patch` interceptor runs + before the `post_patch_with_metadata` interceptor. + """ + return response + + def post_patch_with_metadata( + self, + response: compute.GlobalFrontendSettingsPatchResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GlobalFrontendSettingsPatchResponse, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Post-rpc interceptor for patch + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the GlobalFrontendSettingsService server but before it is returned to user code. + + We recommend only using this `post_patch_with_metadata` + interceptor in new development instead of the `post_patch` interceptor. + When both interceptors are used, this `post_patch_with_metadata` interceptor runs after the + `post_patch` interceptor. The (possibly modified) response returned by + `post_patch` will be passed to + `post_patch_with_metadata`. + """ + return response, metadata + + +@dataclasses.dataclass +class GlobalFrontendSettingsServiceRestStub: + _session: AuthorizedSession + _host: str + _interceptor: GlobalFrontendSettingsServiceRestInterceptor + + +class GlobalFrontendSettingsServiceRestTransport( + _BaseGlobalFrontendSettingsServiceRestTransport +): + """REST backend synchronous transport for GlobalFrontendSettingsService. + + The GlobalFrontendSettings 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[GlobalFrontendSettingsServiceRestInterceptor] = 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. + interceptor (Optional[GlobalFrontendSettingsServiceRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 GlobalFrontendSettingsServiceRestInterceptor() + ) + self._prep_wrapped_messages(client_info) + + class _Get( + _BaseGlobalFrontendSettingsServiceRestTransport._BaseGet, + GlobalFrontendSettingsServiceRestStub, + ): + def __hash__(self): + return hash("GlobalFrontendSettingsServiceRestTransport.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.GetGlobalFrontendSettingRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.GlobalFrontendSettings: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetGlobalFrontendSettingRequest): + The request object. A request message for + GlobalFrontendSettingsService.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.GlobalFrontendSettings: + Represents the Global Frontend Bundle + settings for a single project. + + """ + + http_options = _BaseGlobalFrontendSettingsServiceRestTransport._BaseGet._get_http_options() + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseGlobalFrontendSettingsServiceRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.GlobalFrontendSettingsServiceClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = GlobalFrontendSettingsServiceRestTransport._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.GlobalFrontendSettings() + pb_resp = compute.GlobalFrontendSettings.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.GlobalFrontendSettings.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_v1.GlobalFrontendSettingsServiceClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Patch( + _BaseGlobalFrontendSettingsServiceRestTransport._BasePatch, + GlobalFrontendSettingsServiceRestStub, + ): + def __hash__(self): + return hash("GlobalFrontendSettingsServiceRestTransport.Patch") + + @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.PatchGlobalFrontendSettingRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.GlobalFrontendSettingsPatchResponse: + r"""Call the patch method over HTTP. + + Args: + request (~.compute.PatchGlobalFrontendSettingRequest): + The request object. A request message for + GlobalFrontendSettingsService.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. + 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.GlobalFrontendSettingsPatchResponse: + Response to an + UpdateGlobalFrontendSettingsRequest. + + """ + + http_options = _BaseGlobalFrontendSettingsServiceRestTransport._BasePatch._get_http_options() + request, metadata = self._interceptor.pre_patch(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseGlobalFrontendSettingsServiceRestTransport._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.GlobalFrontendSettingsServiceClient.Patch", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Patch", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = GlobalFrontendSettingsServiceRestTransport._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 + # subclass. + if response.status_code >= 400: + raise core_exceptions.from_http_response(response) + + # Return the response + resp = compute.GlobalFrontendSettingsPatchResponse() + pb_resp = compute.GlobalFrontendSettingsPatchResponse.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_patch(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + 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.GlobalFrontendSettingsPatchResponse.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_v1.GlobalFrontendSettingsServiceClient.patch", + extra={ + "serviceName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "rpcName": "Patch", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def get( + self, + ) -> Callable[ + [compute.GetGlobalFrontendSettingRequest], compute.GlobalFrontendSettings + ]: + # 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 patch( + self, + ) -> Callable[ + [compute.PatchGlobalFrontendSettingRequest], + compute.GlobalFrontendSettingsPatchResponse, + ]: + # 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._Patch(self._session, self._host, self._interceptor) # type: ignore + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("GlobalFrontendSettingsServiceRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py new file mode 100644 index 000000000000..5c9d52218d84 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_frontend_settings_service/transports/rest_base.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, GlobalFrontendSettingsServiceTransport + + +class _BaseGlobalFrontendSettingsServiceRestTransport( + GlobalFrontendSettingsServiceTransport +): + """Base REST backend transport for GlobalFrontendSettingsService. + + 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 _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/global/globalFrontendSettings", + }, + ] + return http_options + + class _BasePatch: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "patch", + "uri": "/compute/v1/projects/{project}/global/globalFrontendSettings", + "body": "global_frontend_settings_resource", + }, + ] + return http_options + + +__all__ = ("_BaseGlobalFrontendSettingsServiceRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py index 1136cd7c9eb0..ce191df2b1de 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_network_endpoint_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class GlobalNetworkEndpointGroupsClient( metaclass=GlobalNetworkEndpointGroupsClientMeta ): - """The GlobalNetworkEndpointGroups API.""" + """The GlobalNetworkEndpointGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -716,6 +723,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -865,6 +877,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1017,6 +1034,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1145,6 +1167,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1318,6 +1345,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1467,6 +1499,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1641,6 +1678,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1777,6 +1819,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1913,6 +1960,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2049,6 +2101,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2194,6 +2251,11 @@ def sample_list_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py index f8a4e608e0aa..7416eefd3360 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class GlobalOperationsClient(metaclass=GlobalOperationsClientMeta): - """The GlobalOperations API.""" + """The GlobalOperations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -806,6 +818,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1064,6 +1086,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1237,6 +1264,11 @@ def sample_wait(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py index 6f4313a819c7..8a7812d7c98c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_organization_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class GlobalOrganizationOperationsClient( metaclass=GlobalOrganizationOperationsClientMeta ): - """The GlobalOrganizationOperations API.""" + """The GlobalOrganizationOperations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -903,6 +920,11 @@ def sample_list(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py index 136b0732e2b8..4ee76c87ebdc 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_public_delegated_prefixes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class GlobalPublicDelegatedPrefixesClient( metaclass=GlobalPublicDelegatedPrefixesClientMeta ): - """The GlobalPublicDelegatedPrefixes API.""" + """The GlobalPublicDelegatedPrefixes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -694,6 +701,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -976,6 +993,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1099,6 +1121,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1222,6 +1249,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1358,6 +1390,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1513,6 +1550,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1657,6 +1699,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py index 60a058fc361a..9367803e936e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/global_vm_extension_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class GlobalVmExtensionPoliciesClient(metaclass=GlobalVmExtensionPoliciesClientMeta): - """The GlobalVmExtensionPolicies API.""" + """The GlobalVmExtensionPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -684,6 +691,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -844,6 +856,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -993,6 +1010,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1142,6 +1164,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1263,6 +1290,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1384,6 +1416,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1521,6 +1558,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1673,6 +1715,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1814,6 +1861,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/__init__.py new file mode 100644 index 000000000000..75878acae7be --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 HaControllersClient + +__all__ = ("HaControllersClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/client.py new file mode 100644 index 000000000000..b5089195795f --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/client.py @@ -0,0 +1,2254 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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_v1.services.ha_controllers import pagers +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, HaControllersTransport +from .transports.rest import HaControllersRestTransport + + +class HaControllersClientMeta(type): + """Metaclass for the HaControllers 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[HaControllersTransport]] + _transport_registry["rest"] = HaControllersRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[HaControllersTransport]: + """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 HaControllersClient(metaclass=HaControllersClientMeta): + """The HaControllers API. This class implements API version 2026-10-01-preview.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + HaControllersClient: 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: + HaControllersClient: 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) -> HaControllersTransport: + """Returns the transport used by the client instance. + + Returns: + HaControllersTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, HaControllersTransport, Callable[..., HaControllersTransport]] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the ha controllers 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,HaControllersTransport,Callable[..., HaControllersTransport]]]): + 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 HaControllersTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = HaControllersClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=HaControllersClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, HaControllersTransport) + if transport_provided: + # transport is a HaControllersTransport 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(HaControllersTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=HaControllersClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=HaControllersClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=HaControllersClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[HaControllersTransport], Callable[..., HaControllersTransport] + ] = ( + HaControllersClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., HaControllersTransport], 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_v1.HaControllersClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "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.v1.HaControllers", + "credentialsType": None, + }, + ) + + def aggregated_list( + self, + request: Optional[ + Union[compute.AggregatedListHaControllersRequest, 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.AggregatedListPager: + r"""Retrieves an aggregated list of all of the + HaControllers in the specified project across all + regions. + + .. 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_v1 + + def sample_aggregated_list(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.AggregatedListHaControllersRequest( + project="project_value", + ) + + # Make the request + page_result = client.aggregated_list(request=request) + + # Handle the response + for response in page_result: + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.AggregatedListHaControllersRequest, dict]): + The request object. A request message for + HaControllers.AggregatedList. 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_v1.services.ha_controllers.pagers.AggregatedListPager: + 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.AggregatedListHaControllersRequest): + request = compute.AggregatedListHaControllersRequest(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.aggregated_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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.AggregatedListPager( + method=rpc, + request=request, + response=response, + retry=retry, + timeout=timeout, + metadata=metadata, + ) + + # Done; return the response. + return response + + def delete_unary( + self, + request: Optional[Union[compute.DeleteHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: 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 an HaController in 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_v1 + + def sample_delete(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.DeleteHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.DeleteHaControllerRequest, dict]): + The request object. A request message for + HaControllers.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. + 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. + ha_controller (str): + Name of the HaController resource to + delete. + + This corresponds to the ``ha_controller`` 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, ha_controller] + 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.DeleteHaControllerRequest): + request = compute.DeleteHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + + # 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), + ("region", request.region), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.DeleteHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: 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 an HaController in 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_v1 + + def sample_delete(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.DeleteHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.DeleteHaControllerRequest, dict]): + The request object. A request message for + HaControllers.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. + 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. + ha_controller (str): + Name of the HaController resource to + delete. + + This corresponds to the ``ha_controller`` 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, ha_controller] + 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.DeleteHaControllerRequest): + request = compute.DeleteHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + + # 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), + ("region", request.region), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 failover_unary( + self, + request: Optional[Union[compute.FailoverHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: Optional[str] = None, + ha_controllers_failover_request_resource: Optional[ + compute.HaControllersFailoverRequest + ] = 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"""Fails over a VM targeted by the specified + HaController to the selected zone. + + .. 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_v1 + + def sample_failover(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.FailoverHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.failover(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.FailoverHaControllerRequest, dict]): + The request object. A request message for + HaControllers.Failover. 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. + ha_controller (str): + ID of the HaController resource to + update. + + This corresponds to the ``ha_controller`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + ha_controllers_failover_request_resource (google.cloud.compute_v1.types.HaControllersFailoverRequest): + The body resource for this request + This corresponds to the ``ha_controllers_failover_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, + region, + ha_controller, + ha_controllers_failover_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.FailoverHaControllerRequest): + request = compute.FailoverHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + if ha_controllers_failover_request_resource is not None: + request.ha_controllers_failover_request_resource = ( + ha_controllers_failover_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.failover] + + # 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), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 failover( + self, + request: Optional[Union[compute.FailoverHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: Optional[str] = None, + ha_controllers_failover_request_resource: Optional[ + compute.HaControllersFailoverRequest + ] = 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"""Fails over a VM targeted by the specified + HaController to the selected zone. + + .. 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_v1 + + def sample_failover(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.FailoverHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.failover(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.FailoverHaControllerRequest, dict]): + The request object. A request message for + HaControllers.Failover. 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. + ha_controller (str): + ID of the HaController resource to + update. + + This corresponds to the ``ha_controller`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + ha_controllers_failover_request_resource (google.cloud.compute_v1.types.HaControllersFailoverRequest): + The body resource for this request + This corresponds to the ``ha_controllers_failover_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, + region, + ha_controller, + ha_controllers_failover_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.FailoverHaControllerRequest): + request = compute.FailoverHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + if ha_controllers_failover_request_resource is not None: + request.ha_controllers_failover_request_resource = ( + ha_controllers_failover_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.failover] + + # 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), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 get( + self, + request: Optional[Union[compute.GetHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: 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.HaController: + r"""Returns all the details of a specific HaController. + + .. 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.GetHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetHaControllerRequest, dict]): + The request object. A request message for + HaControllers.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. + 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. + ha_controller (str): + Name of the HaController resource to + return. + + This corresponds to the ``ha_controller`` 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_v1.types.HaController: + HaController handles failover for a + VM Instance. + + """ + # 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, ha_controller] + 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.GetHaControllerRequest): + request = compute.GetHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + + # 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), + ("region", request.region), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.InsertHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller_resource: Optional[compute.HaController] = 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 HaController in 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_v1 + + def sample_insert(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.InsertHaControllerRequest( + 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_v1.types.InsertHaControllerRequest, dict]): + The request object. A request message for + HaControllers.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. + ha_controller_resource (google.cloud.compute_v1.types.HaController): + The body resource for this request + This corresponds to the ``ha_controller_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, ha_controller_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.InsertHaControllerRequest): + request = compute.InsertHaControllerRequest(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 ha_controller_resource is not None: + request.ha_controller_resource = ha_controller_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), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.InsertHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller_resource: Optional[compute.HaController] = 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 HaController in 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_v1 + + def sample_insert(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.InsertHaControllerRequest( + 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_v1.types.InsertHaControllerRequest, dict]): + The request object. A request message for + HaControllers.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. + ha_controller_resource (google.cloud.compute_v1.types.HaController): + The body resource for this request + This corresponds to the ``ha_controller_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, ha_controller_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.InsertHaControllerRequest): + request = compute.InsertHaControllerRequest(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 ha_controller_resource is not None: + request.ha_controller_resource = ha_controller_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), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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.ListHaControllersRequest, 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"""Lists all HaControllers in the specified project in + the specified region. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.ListHaControllersRequest( + 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_v1.types.ListHaControllersRequest, dict]): + The request object. A request message for + HaControllers.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_v1.services.ha_controllers.pagers.ListPager: + 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.ListHaControllersRequest): + request = compute.ListHaControllersRequest(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), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 patch_unary( + self, + request: Optional[Union[compute.PatchHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: Optional[str] = None, + ha_controller_resource: Optional[compute.HaController] = 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 HaController in 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_v1 + + def sample_patch(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.PatchHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchHaControllerRequest, dict]): + The request object. A request message for + HaControllers.Patch. 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. + ha_controller (str): + ID of the HaController resource to + update. + + This corresponds to the ``ha_controller`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + ha_controller_resource (google.cloud.compute_v1.types.HaController): + The body resource for this request + This corresponds to the ``ha_controller_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, ha_controller, ha_controller_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.PatchHaControllerRequest): + request = compute.PatchHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + if ha_controller_resource is not None: + request.ha_controller_resource = ha_controller_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch] + + # 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), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 patch( + self, + request: Optional[Union[compute.PatchHaControllerRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + ha_controller: Optional[str] = None, + ha_controller_resource: Optional[compute.HaController] = 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 HaController in 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_v1 + + def sample_patch(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.PatchHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchHaControllerRequest, dict]): + The request object. A request message for + HaControllers.Patch. 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. + ha_controller (str): + ID of the HaController resource to + update. + + This corresponds to the ``ha_controller`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + ha_controller_resource (google.cloud.compute_v1.types.HaController): + The body resource for this request + This corresponds to the ``ha_controller_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, ha_controller, ha_controller_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.PatchHaControllerRequest): + request = compute.PatchHaControllerRequest(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 ha_controller is not None: + request.ha_controller = ha_controller + if ha_controller_resource is not None: + request.ha_controller_resource = ha_controller_resource + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch] + + # 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), + ("ha_controller", request.ha_controller), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 __enter__(self) -> "HaControllersClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("HaControllersClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/pagers.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/pagers.py new file mode 100644 index 000000000000..cb40f6b0db0e --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/pagers.py @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class AggregatedListPager: + """A pager for iterating through ``aggregated_list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.HaControllersAggregatedList` object, and + provides an ``__iter__`` method to iterate through its + ``items`` field. + + If there are more pages, the ``__iter__`` method will make additional + ``AggregatedList`` requests and continue to iterate + through the ``items`` field on the + corresponding responses. + + All the usual :class:`google.cloud.compute_v1.types.HaControllersAggregatedList` + 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.HaControllersAggregatedList], + request: compute.AggregatedListHaControllersRequest, + response: compute.HaControllersAggregatedList, + *, + 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_v1.types.AggregatedListHaControllersRequest): + The initial request object. + response (google.cloud.compute_v1.types.HaControllersAggregatedList): + 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.AggregatedListHaControllersRequest(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.HaControllersAggregatedList]: + 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[Tuple[str, compute.HaControllersScopedList]]: + for page in self.pages: + yield from page.items.items() + + def get(self, key: str) -> Optional[compute.HaControllersScopedList]: + return self._response.items.get(key) + + def __repr__(self) -> str: + return "{0}<{1!r}>".format(self.__class__.__name__, self._response) + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.HaControllersList` 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_v1.types.HaControllersList` + 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.HaControllersList], + request: compute.ListHaControllersRequest, + response: compute.HaControllersList, + *, + 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_v1.types.ListHaControllersRequest): + The initial request object. + response (google.cloud.compute_v1.types.HaControllersList): + 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.ListHaControllersRequest(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.HaControllersList]: + 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.HaController]: + 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/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/README.rst b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/README.rst new file mode 100644 index 000000000000..348839dba261 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``HaControllersTransport`` is the ABC for all transports. + +- public child ``HaControllersGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``HaControllersGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseHaControllersRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``HaControllersRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/__init__.py new file mode 100644 index 000000000000..8608f0518aa5 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 HaControllersTransport +from .rest import HaControllersRestInterceptor, HaControllersRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[HaControllersTransport]] +_transport_registry["rest"] = HaControllersRestTransport + +__all__ = ( + "HaControllersTransport", + "HaControllersRestTransport", + "HaControllersRestInterceptor", +) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/base.py new file mode 100644 index 000000000000..f3ee3ed8f325 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/base.py @@ -0,0 +1,307 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.services import region_operations +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class HaControllersTransport(abc.ABC): + """Abstract transport class for HaControllers.""" + + 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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.aggregated_list: gapic_v1.method.wrap_method( + self.aggregated_list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.delete: gapic_v1.method.wrap_method( + self.delete, + default_timeout=600.0, + client_info=client_info, + ), + self.failover: gapic_v1.method.wrap_method( + self.failover, + default_timeout=600.0, + client_info=client_info, + ), + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.insert: gapic_v1.method.wrap_method( + self.insert, + default_timeout=600.0, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.patch: gapic_v1.method.wrap_method( + self.patch, + default_timeout=600.0, + 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 aggregated_list( + self, + ) -> Callable[ + [compute.AggregatedListHaControllersRequest], + Union[ + compute.HaControllersAggregatedList, + Awaitable[compute.HaControllersAggregatedList], + ], + ]: + raise NotImplementedError() + + @property + def delete( + self, + ) -> Callable[ + [compute.DeleteHaControllerRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def failover( + self, + ) -> Callable[ + [compute.FailoverHaControllerRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def get( + self, + ) -> Callable[ + [compute.GetHaControllerRequest], + Union[compute.HaController, Awaitable[compute.HaController]], + ]: + raise NotImplementedError() + + @property + def insert( + self, + ) -> Callable[ + [compute.InsertHaControllerRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListHaControllersRequest], + Union[compute.HaControllersList, Awaitable[compute.HaControllersList]], + ]: + raise NotImplementedError() + + @property + def patch( + self, + ) -> Callable[ + [compute.PatchHaControllerRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + @property + def _region_operations_client(self) -> region_operations.RegionOperationsClient: + ex_op_service = self._extended_operations_services.get("region_operations") + if not ex_op_service: + ex_op_service = region_operations.RegionOperationsClient( + credentials=self._credentials, + transport=self.kind, + ) + self._extended_operations_services["region_operations"] = ex_op_service + + return ex_op_service + + +__all__ = ("HaControllersTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest.py new file mode 100644 index 000000000000..0a4a84b24b43 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest.py @@ -0,0 +1,1758 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseHaControllersRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class HaControllersRestInterceptor: + """Interceptor for HaControllers. + + 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 HaControllersRestTransport. + + .. code-block:: python + class MyCustomHaControllersInterceptor(HaControllersRestInterceptor): + def pre_aggregated_list(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_aggregated_list(self, response): + logging.log(f"Received response: {response}") + return response + + 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_failover(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_failover(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_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_patch(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_patch(self, response): + logging.log(f"Received response: {response}") + return response + + transport = HaControllersRestTransport(interceptor=MyCustomHaControllersInterceptor()) + client = HaControllersClient(transport=transport) + + + """ + + def pre_aggregated_list( + self, + request: compute.AggregatedListHaControllersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.AggregatedListHaControllersRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for aggregated_list + + Override in a subclass to manipulate the request or metadata + before they are sent to the HaControllers server. + """ + return request, metadata + + def post_aggregated_list( + self, response: compute.HaControllersAggregatedList + ) -> compute.HaControllersAggregatedList: + """Post-rpc interceptor for aggregated_list + + DEPRECATED. Please use the `post_aggregated_list_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the HaControllers server but before + it is returned to user code. This `post_aggregated_list` interceptor runs + before the `post_aggregated_list_with_metadata` interceptor. + """ + return response + + def post_aggregated_list_with_metadata( + self, + response: compute.HaControllersAggregatedList, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.HaControllersAggregatedList, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Post-rpc interceptor for aggregated_list + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the HaControllers server but before it is returned to user code. + + We recommend only using this `post_aggregated_list_with_metadata` + interceptor in new development instead of the `post_aggregated_list` interceptor. + When both interceptors are used, this `post_aggregated_list_with_metadata` interceptor runs after the + `post_aggregated_list` interceptor. The (possibly modified) response returned by + `post_aggregated_list` will be passed to + `post_aggregated_list_with_metadata`. + """ + return response, metadata + + def pre_delete( + self, + request: compute.DeleteHaControllerRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.DeleteHaControllerRequest, 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 HaControllers 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 HaControllers 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 HaControllers 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_failover( + self, + request: compute.FailoverHaControllerRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.FailoverHaControllerRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for failover + + Override in a subclass to manipulate the request or metadata + before they are sent to the HaControllers server. + """ + return request, metadata + + def post_failover(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for failover + + DEPRECATED. Please use the `post_failover_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the HaControllers server but before + it is returned to user code. This `post_failover` interceptor runs + before the `post_failover_with_metadata` interceptor. + """ + return response + + def post_failover_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 failover + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the HaControllers server but before it is returned to user code. + + We recommend only using this `post_failover_with_metadata` + interceptor in new development instead of the `post_failover` interceptor. + When both interceptors are used, this `post_failover_with_metadata` interceptor runs after the + `post_failover` interceptor. The (possibly modified) response returned by + `post_failover` will be passed to + `post_failover_with_metadata`. + """ + return response, metadata + + def pre_get( + self, + request: compute.GetHaControllerRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.GetHaControllerRequest, 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 HaControllers server. + """ + return request, metadata + + def post_get(self, response: compute.HaController) -> compute.HaController: + """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 HaControllers 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.HaController, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.HaController, 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 HaControllers 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_insert( + self, + request: compute.InsertHaControllerRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.InsertHaControllerRequest, 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 HaControllers 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 HaControllers 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 HaControllers 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.ListHaControllersRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListHaControllersRequest, 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 HaControllers server. + """ + return request, metadata + + def post_list( + self, response: compute.HaControllersList + ) -> compute.HaControllersList: + """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 HaControllers 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.HaControllersList, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.HaControllersList, 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 HaControllers 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_patch( + self, + request: compute.PatchHaControllerRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.PatchHaControllerRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for patch + + Override in a subclass to manipulate the request or metadata + before they are sent to the HaControllers server. + """ + return request, metadata + + def post_patch(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for patch + + DEPRECATED. Please use the `post_patch_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the HaControllers server but before + it is returned to user code. This `post_patch` interceptor runs + before the `post_patch_with_metadata` interceptor. + """ + return response + + def post_patch_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 + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the HaControllers server but before it is returned to user code. + + We recommend only using this `post_patch_with_metadata` + interceptor in new development instead of the `post_patch` interceptor. + When both interceptors are used, this `post_patch_with_metadata` interceptor runs after the + `post_patch` interceptor. The (possibly modified) response returned by + `post_patch` will be passed to + `post_patch_with_metadata`. + """ + return response, metadata + + +@dataclasses.dataclass +class HaControllersRestStub: + _session: AuthorizedSession + _host: str + _interceptor: HaControllersRestInterceptor + + +class HaControllersRestTransport(_BaseHaControllersRestTransport): + """REST backend synchronous transport for HaControllers. + + The HaControllers 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[HaControllersRestInterceptor] = 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. + interceptor (Optional[HaControllersRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 HaControllersRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _AggregatedList( + _BaseHaControllersRestTransport._BaseAggregatedList, HaControllersRestStub + ): + def __hash__(self): + return hash("HaControllersRestTransport.AggregatedList") + + @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.AggregatedListHaControllersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.HaControllersAggregatedList: + r"""Call the aggregated list method over HTTP. + + Args: + request (~.compute.AggregatedListHaControllersRequest): + The request object. A request message for + HaControllers.AggregatedList. 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.HaControllersAggregatedList: + + """ + + http_options = ( + _BaseHaControllersRestTransport._BaseAggregatedList._get_http_options() + ) + request, metadata = self._interceptor.pre_aggregated_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BaseAggregatedList, + "_BaseAggregatedList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.AggregatedList", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "AggregatedList", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._AggregatedList._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.HaControllersAggregatedList() + pb_resp = compute.HaControllersAggregatedList.pb(resp) + + json_format.Parse(response.content, pb_resp, ignore_unknown_fields=True) + + resp = self._interceptor.post_aggregated_list(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_aggregated_list_with_metadata( + resp, response_metadata + ) + if CLIENT_LOGGING_SUPPORTED and _LOGGER.isEnabledFor( + logging.DEBUG + ): # pragma: NO COVER + try: + response_payload = compute.HaControllersAggregatedList.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_v1.HaControllersClient.aggregated_list", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "AggregatedList", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Delete(_BaseHaControllersRestTransport._BaseDelete, HaControllersRestStub): + def __hash__(self): + return hash("HaControllersRestTransport.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.DeleteHaControllerRequest, + *, + 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.DeleteHaControllerRequest): + The request object. A request message for + HaControllers.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 = ( + _BaseHaControllersRestTransport._BaseDelete._get_http_options() + ) + request, metadata = self._interceptor.pre_delete(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BaseDelete, + "_BaseDelete__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.Delete", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Delete", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._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_v1.HaControllersClient.delete", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Delete", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Failover( + _BaseHaControllersRestTransport._BaseFailover, HaControllersRestStub + ): + def __hash__(self): + return hash("HaControllersRestTransport.Failover") + + @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.FailoverHaControllerRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the failover method over HTTP. + + Args: + request (~.compute.FailoverHaControllerRequest): + The request object. A request message for + HaControllers.Failover. 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 = ( + _BaseHaControllersRestTransport._BaseFailover._get_http_options() + ) + request, metadata = self._interceptor.pre_failover(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BaseFailover, + "_BaseFailover__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.Failover", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Failover", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._Failover._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_failover(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_failover_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_v1.HaControllersClient.failover", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Failover", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Get(_BaseHaControllersRestTransport._BaseGet, HaControllersRestStub): + def __hash__(self): + return hash("HaControllersRestTransport.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.GetHaControllerRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.HaController: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetHaControllerRequest): + The request object. A request message for + HaControllers.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.HaController: + HaController handles failover for a + VM Instance. + + """ + + http_options = _BaseHaControllersRestTransport._BaseGet._get_http_options() + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._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.HaController() + pb_resp = compute.HaController.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.HaController.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_v1.HaControllersClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Insert(_BaseHaControllersRestTransport._BaseInsert, HaControllersRestStub): + def __hash__(self): + return hash("HaControllersRestTransport.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.InsertHaControllerRequest, + *, + 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.InsertHaControllerRequest): + The request object. A request message for + HaControllers.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 = ( + _BaseHaControllersRestTransport._BaseInsert._get_http_options() + ) + request, metadata = self._interceptor.pre_insert(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BaseInsert, + "_BaseInsert__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.Insert", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Insert", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._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_v1.HaControllersClient.insert", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Insert", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseHaControllersRestTransport._BaseList, HaControllersRestStub): + def __hash__(self): + return hash("HaControllersRestTransport.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.ListHaControllersRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.HaControllersList: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListHaControllersRequest): + The request object. A request message for + HaControllers.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.HaControllersList: + + """ + + http_options = _BaseHaControllersRestTransport._BaseList._get_http_options() + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._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.HaControllersList() + pb_resp = compute.HaControllersList.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.HaControllersList.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_v1.HaControllersClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _Patch(_BaseHaControllersRestTransport._BasePatch, HaControllersRestStub): + def __hash__(self): + return hash("HaControllersRestTransport.Patch") + + @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.PatchHaControllerRequest, + *, + 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. + + Args: + request (~.compute.PatchHaControllerRequest): + The request object. A request message for + HaControllers.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. + 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 = ( + _BaseHaControllersRestTransport._BasePatch._get_http_options() + ) + request, metadata = self._interceptor.pre_patch(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseHaControllersRestTransport._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.HaControllersClient.Patch", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Patch", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = HaControllersRestTransport._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 + # 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_patch(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + 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.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_v1.HaControllersClient.patch", + extra={ + "serviceName": "google.cloud.compute.v1.HaControllers", + "rpcName": "Patch", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def aggregated_list( + self, + ) -> Callable[ + [compute.AggregatedListHaControllersRequest], + compute.HaControllersAggregatedList, + ]: + # 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._AggregatedList(self._session, self._host, self._interceptor) # type: ignore + + @property + def delete( + self, + ) -> Callable[[compute.DeleteHaControllerRequest], 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 failover( + self, + ) -> Callable[[compute.FailoverHaControllerRequest], 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._Failover(self._session, self._host, self._interceptor) # type: ignore + + @property + def get(self) -> Callable[[compute.GetHaControllerRequest], compute.HaController]: + # 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 insert( + self, + ) -> Callable[[compute.InsertHaControllerRequest], 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.ListHaControllersRequest], compute.HaControllersList]: + # 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 patch(self) -> Callable[[compute.PatchHaControllerRequest], 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._Patch(self._session, self._host, self._interceptor) # type: ignore + + @property + def kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("HaControllersRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest_base.py new file mode 100644 index 000000000000..906d1481a137 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ha_controllers/transports/rest_base.py @@ -0,0 +1,206 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, HaControllersTransport + + +class _BaseHaControllersRestTransport(HaControllersTransport): + """Base REST backend transport for HaControllers. + + 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 _BaseAggregatedList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/aggregated/haControllers", + }, + ] + return http_options + + class _BaseDelete: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "delete", + "uri": "/compute/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}", + }, + ] + return http_options + + class _BaseFailover: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}/failover", + "body": "ha_controllers_failover_request_resource", + }, + ] + return http_options + + class _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}", + }, + ] + return http_options + + class _BaseInsert: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/regions/{region}/haControllers", + "body": "ha_controller_resource", + }, + ] + return http_options + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/regions/{region}/haControllers", + }, + ] + return http_options + + class _BasePatch: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "patch", + "uri": "/compute/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}", + "body": "ha_controller_resource", + }, + ] + return http_options + + +__all__ = ("_BaseHaControllersRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py index 60a00631cdd8..b4e6b008713e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/health_checks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class HealthChecksClient(metaclass=HealthChecksClientMeta): - """The HealthChecks API.""" + """The HealthChecks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -673,6 +680,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -807,6 +819,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -930,6 +947,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1102,6 +1124,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1218,6 +1245,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1334,6 +1366,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1470,6 +1507,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1615,6 +1657,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1749,6 +1796,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1909,6 +1961,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2041,6 +2098,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2173,6 +2235,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py index c7a38c3f077f..c5ce995daf26 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/hosts/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class HostsClient(metaclass=HostsClientMeta): - """The Hosts API.""" + """The Hosts API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -705,6 +712,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -873,6 +885,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1041,6 +1058,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1207,6 +1229,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py index 7378c772b1a5..68694b5b91f3 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_family_views/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class ImageFamilyViewsClient(metaclass=ImageFamilyViewsClientMeta): - """The ImageFamilyViews API.""" + """The ImageFamilyViews API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -690,6 +697,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py new file mode 100644 index 000000000000..bd3a7be6596b --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ImageViewsClient + +__all__ = ("ImageViewsClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py new file mode 100644 index 000000000000..aaf0063f452f --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/client.py @@ -0,0 +1,882 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.services.image_views import pagers +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, ImageViewsTransport +from .transports.rest import ImageViewsRestTransport + + +class ImageViewsClientMeta(type): + """Metaclass for the ImageViews 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[ImageViewsTransport]] + _transport_registry["rest"] = ImageViewsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[ImageViewsTransport]: + """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 ImageViewsClient(metaclass=ImageViewsClientMeta): + """The ImageViews API. This class implements API version 2026-10-01-preview.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + ImageViewsClient: 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: + ImageViewsClient: 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) -> ImageViewsTransport: + """Returns the transport used by the client instance. + + Returns: + ImageViewsTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, ImageViewsTransport, Callable[..., ImageViewsTransport]] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the image views 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,ImageViewsTransport,Callable[..., ImageViewsTransport]]]): + 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 ImageViewsTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ImageViewsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=ImageViewsClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, ImageViewsTransport) + if transport_provided: + # transport is a ImageViewsTransport 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(ImageViewsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=ImageViewsClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=ImageViewsClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=ImageViewsClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[ImageViewsTransport], Callable[..., ImageViewsTransport] + ] = ( + ImageViewsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., ImageViewsTransport], 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_v1.ImageViewsClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "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.v1.ImageViews", + "credentialsType": None, + }, + ) + + def get( + self, + request: Optional[Union[compute.GetImageViewRequest, dict]] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + resource_id: 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.ImageView: + r"""Returns the specified global ImageView resource, with + a regional context. + + .. 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.GetImageViewRequest( + project="project_value", + region="region_value", + resource_id="resource_id_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetImageViewRequest, dict]): + The request object. A request message for ImageViews.Get. + See the method description for details. + project (str): + Required. 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): + Required. 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_id (str): + Name of the image resource to return. + This corresponds to the ``resource_id`` 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_v1.types.ImageView: + Represents a read-only view of a + global Image resource. + + """ + # 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_id] + 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.GetImageViewRequest): + request = compute.GetImageViewRequest(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_id is not None: + request.resource_id = resource_id + + # 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), + ("region", request.region), + ("resource_id", request.resource_id), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 list( + self, + request: Optional[Union[compute.ListImageViewsRequest, 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"""Returns a list of global ImageView resources, with a + regional context. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.ListImageViewsRequest( + 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_v1.types.ListImageViewsRequest, dict]): + The request object. A request message for + ImageViews.List. See the method + description for details. + project (str): + Required. 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): + Required. 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_v1.services.image_views.pagers.ListPager: + Response message for + ImageViewsService.List + 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.ListImageViewsRequest): + request = compute.ListImageViewsRequest(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), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 __enter__(self) -> "ImageViewsClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("ImageViewsClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py new file mode 100644 index 000000000000..75a0283c8338 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/pagers.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.ImageViewsListResponse` 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_v1.types.ImageViewsListResponse` + 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.ImageViewsListResponse], + request: compute.ListImageViewsRequest, + response: compute.ImageViewsListResponse, + *, + 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_v1.types.ListImageViewsRequest): + The initial request object. + response (google.cloud.compute_v1.types.ImageViewsListResponse): + 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.ListImageViewsRequest(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.ImageViewsListResponse]: + 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.ImageView]: + 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/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst new file mode 100644 index 000000000000..5c2f3bd36080 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``ImageViewsTransport`` is the ABC for all transports. + +- public child ``ImageViewsGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``ImageViewsGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseImageViewsRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``ImageViewsRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py new file mode 100644 index 000000000000..d6f5bdd8cc20 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ImageViewsTransport +from .rest import ImageViewsRestInterceptor, ImageViewsRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[ImageViewsTransport]] +_transport_registry["rest"] = ImageViewsRestTransport + +__all__ = ( + "ImageViewsTransport", + "ImageViewsRestTransport", + "ImageViewsRestInterceptor", +) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py new file mode 100644 index 000000000000..5ff45e3ba55f --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/base.py @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ImageViewsTransport(abc.ABC): + """Abstract transport class for ImageViews.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/compute.readonly", + "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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + 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 get( + self, + ) -> Callable[ + [compute.GetImageViewRequest], + Union[compute.ImageView, Awaitable[compute.ImageView]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListImageViewsRequest], + Union[ + compute.ImageViewsListResponse, Awaitable[compute.ImageViewsListResponse] + ], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("ImageViewsTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py new file mode 100644 index 000000000000..26399a431230 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest.py @@ -0,0 +1,592 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseImageViewsRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ImageViewsRestInterceptor: + """Interceptor for ImageViews. + + 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 ImageViewsRestTransport. + + .. code-block:: python + class MyCustomImageViewsInterceptor(ImageViewsRestInterceptor): + 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_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 + + transport = ImageViewsRestTransport(interceptor=MyCustomImageViewsInterceptor()) + client = ImageViewsClient(transport=transport) + + + """ + + def pre_get( + self, + request: compute.GetImageViewRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.GetImageViewRequest, 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 ImageViews server. + """ + return request, metadata + + def post_get(self, response: compute.ImageView) -> compute.ImageView: + """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 ImageViews 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.ImageView, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ImageView, 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 ImageViews 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_list( + self, + request: compute.ListImageViewsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ListImageViewsRequest, 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 ImageViews server. + """ + return request, metadata + + def post_list( + self, response: compute.ImageViewsListResponse + ) -> compute.ImageViewsListResponse: + """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 ImageViews 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.ImageViewsListResponse, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ImageViewsListResponse, 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 ImageViews 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 + + +@dataclasses.dataclass +class ImageViewsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: ImageViewsRestInterceptor + + +class ImageViewsRestTransport(_BaseImageViewsRestTransport): + """REST backend synchronous transport for ImageViews. + + The ImageViews 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[ImageViewsRestInterceptor] = 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. + interceptor (Optional[ImageViewsRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 ImageViewsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _Get(_BaseImageViewsRestTransport._BaseGet, ImageViewsRestStub): + def __hash__(self): + return hash("ImageViewsRestTransport.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.GetImageViewRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ImageView: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetImageViewRequest): + The request object. A request message for ImageViews.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.ImageView: + Represents a read-only view of a + global Image resource. + + """ + + http_options = _BaseImageViewsRestTransport._BaseGet._get_http_options() + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseImageViewsRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ImageViewsClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ImageViewsRestTransport._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.ImageView() + pb_resp = compute.ImageView.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.ImageView.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_v1.ImageViewsClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseImageViewsRestTransport._BaseList, ImageViewsRestStub): + def __hash__(self): + return hash("ImageViewsRestTransport.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.ListImageViewsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ImageViewsListResponse: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListImageViewsRequest): + The request object. A request message for + ImageViews.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.ImageViewsListResponse: + Response message for + ImageViewsService.List + + """ + + http_options = _BaseImageViewsRestTransport._BaseList._get_http_options() + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseImageViewsRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ImageViewsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ImageViewsRestTransport._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.ImageViewsListResponse() + pb_resp = compute.ImageViewsListResponse.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.ImageViewsListResponse.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_v1.ImageViewsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.ImageViews", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def get(self) -> Callable[[compute.GetImageViewRequest], compute.ImageView]: + # 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 list( + self, + ) -> Callable[[compute.ListImageViewsRequest], compute.ImageViewsListResponse]: + # 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 kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("ImageViewsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py new file mode 100644 index 000000000000..5277e12869e4 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/image_views/transports/rest_base.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, ImageViewsTransport + + +class _BaseImageViewsRestTransport(ImageViewsTransport): + """Base REST backend transport for ImageViews. + + 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 _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/regions/{region}/imageViews/{resource_id}", + }, + ] + return http_options + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/regions/{region}/imageViews", + }, + ] + return http_options + + +__all__ = ("_BaseImageViewsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py index e8a544f31186..abca70f2d35f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/images/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ImagesClient(metaclass=ImagesClientMeta): - """The Images API.""" + """The Images API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -796,6 +808,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_deprecate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1084,6 +1106,11 @@ def sample_deprecate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1231,6 +1258,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1363,6 +1395,11 @@ def sample_get_from_family(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1515,6 +1552,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1630,6 +1672,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1745,6 +1792,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1887,6 +1939,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2028,6 +2085,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2158,6 +2220,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2346,6 +2413,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2482,6 +2554,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2618,6 +2695,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2776,6 +2858,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py index 67a5b59c5dd2..45eccb838aa7 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_manager_resize_requests/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -119,7 +126,7 @@ def get_transport_class( class InstanceGroupManagerResizeRequestsClient( metaclass=InstanceGroupManagerResizeRequestsClientMeta ): - """The InstanceGroupManagerResizeRequests API.""" + """The InstanceGroupManagerResizeRequests API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -734,6 +741,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -891,6 +903,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1073,6 +1090,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1230,6 +1252,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1415,6 +1442,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1576,6 +1608,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1737,6 +1774,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1907,6 +1949,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py index b69e9542744d..4ad265bf83a5 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_group_managers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstanceGroupManagersClient(metaclass=InstanceGroupManagersClientMeta): - """The InstanceGroupManagers API.""" + """The InstanceGroupManagers API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -734,6 +741,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -907,6 +919,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1047,6 +1064,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1221,6 +1243,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1384,6 +1411,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1571,6 +1603,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1733,6 +1770,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1898,6 +1940,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2038,6 +2085,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2235,6 +2287,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2407,6 +2464,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2596,6 +2658,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2760,6 +2827,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2931,6 +3003,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3079,6 +3156,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3227,6 +3309,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3379,6 +3466,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3534,6 +3626,11 @@ def sample_list_errors(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3694,6 +3791,11 @@ def sample_list_managed_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3853,6 +3955,11 @@ def sample_list_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4031,6 +4138,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4198,6 +4310,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4388,6 +4505,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4553,6 +4675,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4751,6 +4878,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4924,6 +5056,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5129,6 +5266,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5309,6 +5451,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5508,6 +5655,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5682,6 +5834,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5868,6 +6025,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6029,6 +6191,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6215,6 +6382,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6376,6 +6548,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6575,6 +6752,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6749,6 +6931,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6960,6 +7147,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7146,6 +7338,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7357,6 +7554,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7543,6 +7745,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7733,6 +7940,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7898,6 +8110,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py index 59fa2011df23..f02a40adcb06 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstanceGroupsClient(metaclass=InstanceGroupsClientMeta): - """The InstanceGroups API.""" + """The InstanceGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -711,6 +718,11 @@ def sample_add_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -866,6 +878,11 @@ def sample_add_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1005,6 +1022,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1154,6 +1176,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1292,6 +1319,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1477,6 +1509,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1647,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1743,6 +1785,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1900,6 +1947,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2071,6 +2123,11 @@ def sample_list_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2243,6 +2300,11 @@ def sample_remove_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2404,6 +2466,11 @@ def sample_remove_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2584,6 +2651,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2739,6 +2811,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2912,6 +2989,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py index c4e3e1be8f5b..bbf07541d225 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_settings_service/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class InstanceSettingsServiceClient(metaclass=InstanceSettingsServiceClientMeta): - """The InstanceSettings API.""" + """The InstanceSettings API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -950,6 +967,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py index 9524200c4c4c..92c35c305adc 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instance_templates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstanceTemplatesClient(metaclass=InstanceTemplatesClientMeta): - """The InstanceTemplates API.""" + """The InstanceTemplates API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -817,6 +829,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -943,6 +960,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1105,6 +1127,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1259,6 +1286,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1379,6 +1411,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1499,6 +1536,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1635,6 +1677,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1812,6 +1859,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1948,6 +2000,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py index 4109abd9de94..6fb599a30fc0 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instances/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstancesClient(metaclass=InstancesClientMeta): - """The Instances API.""" + """The Instances API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -715,6 +722,11 @@ def sample_add_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -874,6 +886,11 @@ def sample_add_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1046,6 +1063,11 @@ def sample_add_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1193,6 +1215,11 @@ def sample_add_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1372,6 +1399,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1526,6 +1558,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1668,6 +1705,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1824,6 +1866,11 @@ def sample_attach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1969,6 +2016,11 @@ def sample_attach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2131,6 +2183,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2268,6 +2325,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2429,6 +2491,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2565,6 +2632,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2746,6 +2818,11 @@ def sample_delete_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2902,6 +2979,11 @@ def sample_delete_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3083,6 +3165,11 @@ def sample_delete_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3239,6 +3326,11 @@ def sample_delete_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3410,6 +3502,11 @@ def sample_detach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3556,6 +3653,11 @@ def sample_detach_disk(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3719,6 +3821,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3866,6 +3973,11 @@ def sample_get_effective_firewalls(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4001,6 +4113,11 @@ def sample_get_guest_attributes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4165,6 +4282,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4298,6 +4420,11 @@ def sample_get_screenshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4434,6 +4561,11 @@ def sample_get_serial_port_output(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4571,6 +4703,11 @@ def sample_get_shielded_instance_identity(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4703,6 +4840,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4835,6 +4977,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4987,6 +5134,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5144,6 +5296,11 @@ def sample_list_referrers(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5292,6 +5449,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5429,6 +5591,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5606,6 +5773,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5758,6 +5930,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5938,6 +6115,11 @@ def sample_report_host_as_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6093,6 +6275,11 @@ def sample_report_host_as_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6255,6 +6442,11 @@ def sample_reset(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6392,6 +6584,11 @@ def sample_reset(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6553,6 +6750,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6689,6 +6891,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6854,6 +7061,11 @@ def sample_send_diagnostic_interrupt(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6991,6 +7203,11 @@ def sample_set_deletion_protection(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7128,6 +7345,11 @@ def sample_set_deletion_protection(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7311,6 +7533,11 @@ def sample_set_disk_auto_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7469,6 +7696,11 @@ def sample_set_disk_auto_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7668,6 +7900,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7821,6 +8058,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7974,6 +8216,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8154,6 +8401,11 @@ def sample_set_machine_resources(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8309,6 +8561,11 @@ def sample_set_machine_resources(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8487,6 +8744,11 @@ def sample_set_machine_type(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8640,6 +8902,11 @@ def sample_set_machine_type(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8809,6 +9076,11 @@ def sample_set_metadata(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -8953,6 +9225,11 @@ def sample_set_metadata(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9133,6 +9410,11 @@ def sample_set_min_cpu_platform(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9288,6 +9570,11 @@ def sample_set_min_cpu_platform(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9463,6 +9750,11 @@ def sample_set_name(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9613,6 +9905,11 @@ def sample_set_name(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9784,6 +10081,11 @@ def sample_set_scheduling(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -9930,6 +10232,11 @@ def sample_set_scheduling(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10110,6 +10417,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10265,6 +10577,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10444,6 +10761,11 @@ def sample_set_service_account(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10598,6 +10920,11 @@ def sample_set_service_account(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10784,6 +11111,11 @@ def sample_set_shielded_instance_integrity_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -10945,6 +11277,11 @@ def sample_set_shielded_instance_integrity_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11115,6 +11452,11 @@ def sample_set_tags(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11260,6 +11602,11 @@ def sample_set_tags(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11425,6 +11772,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11565,6 +11917,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11727,6 +12084,11 @@ def sample_start(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -11864,6 +12226,11 @@ def sample_start(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12047,6 +12414,11 @@ def sample_start_with_encryption_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12205,6 +12577,11 @@ def sample_start_with_encryption_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12370,6 +12747,11 @@ def sample_stop(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12510,6 +12892,11 @@ def sample_stop(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12679,6 +13066,11 @@ def sample_suspend(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12823,6 +13215,11 @@ def sample_suspend(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -12996,6 +13393,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13142,6 +13544,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13288,6 +13695,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13477,6 +13889,11 @@ def sample_update_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13641,6 +14058,11 @@ def sample_update_access_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13814,6 +14236,11 @@ def sample_update_display_device(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -13962,6 +14389,11 @@ def sample_update_display_device(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14153,6 +14585,11 @@ def sample_update_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14319,6 +14756,11 @@ def sample_update_network_interface(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14498,6 +14940,11 @@ def sample_update_shielded_instance_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -14652,6 +15099,11 @@ def sample_update_shielded_instance_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py index 1681c27645eb..6bc975156632 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshot_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstantSnapshotGroupsClient(metaclass=InstantSnapshotGroupsClientMeta): - """The InstantSnapshotGroups API.""" + """The InstantSnapshotGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -698,6 +705,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1000,6 +1017,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1166,6 +1188,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1299,6 +1326,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1432,6 +1464,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1585,6 +1622,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1772,6 +1814,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1922,6 +1969,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py index a1fbee640fb3..5d59bff1c97c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/instant_snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InstantSnapshotsClient(metaclass=InstantSnapshotsClientMeta): - """The InstantSnapshots API.""" + """The InstantSnapshots API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -673,6 +680,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -828,6 +840,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -972,6 +989,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1135,6 +1157,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1301,6 +1328,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1430,6 +1462,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1559,6 +1596,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1712,6 +1754,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1899,6 +1946,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2046,6 +2098,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2193,6 +2250,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2366,6 +2428,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py index 33f253f81c2f..a37861389335 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachment_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class InterconnectAttachmentGroupsClient( metaclass=InterconnectAttachmentGroupsClientMeta ): - """The InterconnectAttachmentGroups API.""" + """The InterconnectAttachmentGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -829,6 +841,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -985,6 +1002,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1141,6 +1163,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1275,6 +1302,11 @@ def sample_get_operational_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1398,6 +1430,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1521,6 +1558,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1657,6 +1699,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1816,6 +1863,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1964,6 +2016,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2156,6 +2213,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2296,6 +2358,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py index f41fd4e05130..d6173c4e1779 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_attachments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InterconnectAttachmentsClient(metaclass=InterconnectAttachmentsClientMeta): - """The InterconnectAttachments API.""" + """The InterconnectAttachments API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -960,6 +977,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1124,6 +1146,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1260,6 +1287,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1396,6 +1428,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1551,6 +1588,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1719,6 +1761,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1876,6 +1923,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2055,6 +2107,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2209,6 +2266,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py index 360aa2f9d797..6d033ba92a4f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InterconnectGroupsClient(metaclass=InterconnectGroupsClientMeta): - """The InterconnectGroups API.""" + """The InterconnectGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -703,6 +710,11 @@ def sample_create_members(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -845,6 +857,11 @@ def sample_create_members(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -993,6 +1010,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1117,6 +1139,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1266,6 +1293,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1420,6 +1452,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1548,6 +1585,11 @@ def sample_get_operational_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1665,6 +1707,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1782,6 +1829,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1916,6 +1968,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2061,6 +2118,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2195,6 +2257,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2385,6 +2452,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2521,6 +2593,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py index 6b679f552e8e..210841b795d5 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_locations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class InterconnectLocationsClient(metaclass=InterconnectLocationsClientMeta): - """The InterconnectLocations API.""" + """The InterconnectLocations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -800,6 +812,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py index c28ffa297f70..340132e05554 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnect_remote_locations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class InterconnectRemoteLocationsClient( metaclass=InterconnectRemoteLocationsClientMeta ): - """The InterconnectRemoteLocations API.""" + """The InterconnectRemoteLocations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -697,6 +704,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -813,6 +825,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py index 3fdc6d91a469..067a70a4fa69 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class InterconnectsClient(metaclass=InterconnectsClientMeta): - """The Interconnects API.""" + """The Interconnects API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -677,6 +684,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -798,6 +810,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -949,6 +966,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1083,6 +1105,11 @@ def sample_get_diagnostics(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1209,6 +1236,11 @@ def sample_get_macsec_config(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1325,6 +1357,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1441,6 +1478,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1577,6 +1619,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1720,6 +1767,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1852,6 +1904,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2013,6 +2070,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2150,6 +2212,319 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 set_name_unary( + self, + request: Optional[Union[compute.SetNameInterconnectRequest, dict]] = None, + *, + project: Optional[str] = None, + interconnect: Optional[str] = None, + interconnects_set_name_request_resource: Optional[ + compute.InterconnectsSetNameRequest + ] = 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"""Sets name of an interconnect. + + .. 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_v1 + + def sample_set_name(): + # Create a client + client = compute_v1.InterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.SetNameInterconnectRequest( + interconnect="interconnect_value", + project="project_value", + ) + + # Make the request + response = client.set_name(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.SetNameInterconnectRequest, dict]): + The request object. A request message for + Interconnects.SetName. 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. + interconnect (str): + Name of the interconnect to update. + This corresponds to the ``interconnect`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + interconnects_set_name_request_resource (google.cloud.compute_v1.types.InterconnectsSetNameRequest): + The body resource for this request + This corresponds to the ``interconnects_set_name_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, + interconnect, + interconnects_set_name_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.SetNameInterconnectRequest): + request = compute.SetNameInterconnectRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if interconnect is not None: + request.interconnect = interconnect + if interconnects_set_name_request_resource is not None: + request.interconnects_set_name_request_resource = ( + interconnects_set_name_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.set_name] + + # 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), + ("interconnect", request.interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 set_name( + self, + request: Optional[Union[compute.SetNameInterconnectRequest, dict]] = None, + *, + project: Optional[str] = None, + interconnect: Optional[str] = None, + interconnects_set_name_request_resource: Optional[ + compute.InterconnectsSetNameRequest + ] = 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"""Sets name of an interconnect. + + .. 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_v1 + + def sample_set_name(): + # Create a client + client = compute_v1.InterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.SetNameInterconnectRequest( + interconnect="interconnect_value", + project="project_value", + ) + + # Make the request + response = client.set_name(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.SetNameInterconnectRequest, dict]): + The request object. A request message for + Interconnects.SetName. 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. + interconnect (str): + Name of the interconnect to update. + This corresponds to the ``interconnect`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + interconnects_set_name_request_resource (google.cloud.compute_v1.types.InterconnectsSetNameRequest): + The body resource for this request + This corresponds to the ``interconnects_set_name_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, + interconnect, + interconnects_set_name_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.SetNameInterconnectRequest): + request = compute.SetNameInterconnectRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if interconnect is not None: + request.interconnect = interconnect + if interconnects_set_name_request_resource is not None: + request.interconnects_set_name_request_resource = ( + interconnects_set_name_request_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.set_name] + + # 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), + ("interconnect", request.interconnect), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py index 686229630179..b48700ec2037 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/base.py @@ -225,6 +225,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.set_name: gapic_v1.method.wrap_method( + self.set_name, + default_timeout=600.0, + client_info=client_info, + ), } def close(self): @@ -314,6 +319,15 @@ def set_labels( ]: raise NotImplementedError() + @property + def set_name( + self, + ) -> Callable[ + [compute.SetNameInterconnectRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def kind(self) -> str: raise NotImplementedError() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py index b35525821a2d..e5197ef5acf6 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest.py @@ -136,6 +136,14 @@ def post_set_labels(self, response): logging.log(f"Received response: {response}") return response + def pre_set_name(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_set_name(self, response): + logging.log(f"Received response: {response}") + return response + transport = InterconnectsRestTransport(interceptor=MyCustomInterconnectsInterceptor()) client = InterconnectsClient(transport=transport) @@ -520,6 +528,52 @@ def post_set_labels_with_metadata( """ return response, metadata + def pre_set_name( + self, + request: compute.SetNameInterconnectRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.SetNameInterconnectRequest, Sequence[Tuple[str, Union[str, bytes]]] + ]: + """Pre-rpc interceptor for set_name + + Override in a subclass to manipulate the request or metadata + before they are sent to the Interconnects server. + """ + return request, metadata + + def post_set_name(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for set_name + + DEPRECATED. Please use the `post_set_name_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the Interconnects server but before + it is returned to user code. This `post_set_name` interceptor runs + before the `post_set_name_with_metadata` interceptor. + """ + return response + + def post_set_name_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 set_name + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the Interconnects server but before it is returned to user code. + + We recommend only using this `post_set_name_with_metadata` + interceptor in new development instead of the `post_set_name` interceptor. + When both interceptors are used, this `post_set_name_with_metadata` interceptor runs after the + `post_set_name` interceptor. The (possibly modified) response returned by + `post_set_name` will be passed to + `post_set_name_with_metadata`. + """ + return response, metadata + @dataclasses.dataclass class InterconnectsRestStub: @@ -1913,6 +1967,181 @@ def __call__( ) return resp + class _SetName(_BaseInterconnectsRestTransport._BaseSetName, InterconnectsRestStub): + def __hash__(self): + return hash("InterconnectsRestTransport.SetName") + + @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.SetNameInterconnectRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the set name method over HTTP. + + Args: + request (~.compute.SetNameInterconnectRequest): + The request object. A request message for + Interconnects.SetName. 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 = ( + _BaseInterconnectsRestTransport._BaseSetName._get_http_options() + ) + request, metadata = self._interceptor.pre_set_name(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseInterconnectsRestTransport._BaseSetName, + "_BaseSetName__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.InterconnectsClient.SetName", + extra={ + "serviceName": "google.cloud.compute.v1.Interconnects", + "rpcName": "SetName", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = InterconnectsRestTransport._SetName._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_set_name(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_set_name_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_v1.InterconnectsClient.set_name", + extra={ + "serviceName": "google.cloud.compute.v1.Interconnects", + "rpcName": "SetName", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + @property def delete( self, @@ -1979,6 +2208,14 @@ def set_labels( # In C++ this would require a dynamic_cast return self._SetLabels(self._session, self._host, self._interceptor) # type: ignore + @property + def set_name( + self, + ) -> Callable[[compute.SetNameInterconnectRequest], 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._SetName(self._session, self._host, self._interceptor) # type: ignore + @property def kind(self) -> str: return "rest" diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py index 244e370be435..91bec16f265a 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/interconnects/transports/rest_base.py @@ -218,5 +218,22 @@ def _get_http_options(): ] return http_options + class _BaseSetName: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/global/interconnects/{interconnect}/setName", + "body": "interconnects_set_name_request_resource", + }, + ] + return http_options + __all__ = ("_BaseInterconnectsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py index 59baf3f835f6..8806ba2f6c25 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/license_codes/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class LicenseCodesClient(metaclass=LicenseCodesClientMeta): - """The LicenseCodes API.""" + """The LicenseCodes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -836,6 +848,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1002,6 +1019,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1139,6 +1161,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py index ebf0140b7c00..63d44d1e8003 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/licenses/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class LicensesClient(metaclass=LicensesClientMeta): - """The Licenses API.""" + """The Licenses API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -806,6 +818,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1113,6 +1135,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1230,6 +1257,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1347,6 +1379,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1487,6 +1524,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1664,6 +1706,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1799,6 +1846,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1930,6 +1982,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2061,6 +2118,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py index e447d34e72dd..370b666cf309 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_images/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class MachineImagesClient(metaclass=MachineImagesClientMeta): - """The MachineImages API.""" + """The MachineImages API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -804,6 +816,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -956,6 +973,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1108,6 +1130,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1228,6 +1255,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1348,6 +1380,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1484,6 +1521,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1659,6 +1701,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1795,6 +1842,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1931,6 +1983,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2091,6 +2148,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py index e55c6810f6a4..762d2209163a 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/machine_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class MachineTypesClient(metaclass=MachineTypesClientMeta): - """The MachineTypes API.""" + """The MachineTypes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -667,6 +674,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -815,6 +827,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -943,6 +960,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py new file mode 100644 index 000000000000..5c6e780a49c4 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ManagedRulesetsClient + +__all__ = ("ManagedRulesetsClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py new file mode 100644 index 000000000000..0f8650d3e5c8 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/client.py @@ -0,0 +1,859 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 +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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1._compat import ( + get_api_endpoint, + get_default_mtls_endpoint, + get_universe_domain, + read_environment_variables, + should_use_client_cert, +) + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + +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__) + +from google.cloud.compute_v1.services.managed_rulesets import pagers +from google.cloud.compute_v1.types import compute + +from .transports.base import DEFAULT_CLIENT_INFO, ManagedRulesetsTransport +from .transports.rest import ManagedRulesetsRestTransport + + +class ManagedRulesetsClientMeta(type): + """Metaclass for the ManagedRulesets 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[ManagedRulesetsTransport]] + _transport_registry["rest"] = ManagedRulesetsRestTransport + + def get_transport_class( + cls, + label: Optional[str] = None, + ) -> Type[ManagedRulesetsTransport]: + """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 ManagedRulesetsClient(metaclass=ManagedRulesetsClientMeta): + """The ManagedRulesets API. This class implements API version 2026-10-01-preview.""" + + # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. + DEFAULT_ENDPOINT = "compute.googleapis.com" + DEFAULT_MTLS_ENDPOINT = get_default_mtls_endpoint(DEFAULT_ENDPOINT) + + _DEFAULT_ENDPOINT_TEMPLATE = "compute.{UNIVERSE_DOMAIN}" + _DEFAULT_UNIVERSE = "googleapis.com" + + @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: + ManagedRulesetsClient: 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: + ManagedRulesetsClient: 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) -> ManagedRulesetsTransport: + """Returns the transport used by the client instance. + + Returns: + ManagedRulesetsTransport: 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 = should_use_client_cert() + 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 # type: ignore + else: + api_endpoint = cls.DEFAULT_ENDPOINT + + return api_endpoint, client_cert_source + + @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 + + 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) -> str: + """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, ManagedRulesetsTransport, Callable[..., ManagedRulesetsTransport] + ] + ] = None, + client_options: Optional[Union[client_options_lib.ClientOptions, dict]] = None, + client_info: gapic_v1.client_info.ClientInfo = DEFAULT_CLIENT_INFO, + ) -> None: + """Instantiates the managed rulesets 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,ManagedRulesetsTransport,Callable[..., ManagedRulesetsTransport]]]): + 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 ManagedRulesetsTransport 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 = ( + read_environment_variables() + ) + self._client_cert_source = ManagedRulesetsClient._get_client_cert_source( + self._client_options.client_cert_source, self._use_client_cert + ) + self._universe_domain = get_universe_domain( + universe_domain_opt, + self._universe_domain_env, + default_universe=ManagedRulesetsClient._DEFAULT_UNIVERSE, + ) + self._api_endpoint: str = "" # 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, ManagedRulesetsTransport) + if transport_provided: + # transport is a ManagedRulesetsTransport 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(ManagedRulesetsTransport, transport) + self._api_endpoint = self._transport.host + + self._api_endpoint = self._api_endpoint or get_api_endpoint( + api_override=self._client_options.api_endpoint, + universe_domain=self._universe_domain, + default_universe=ManagedRulesetsClient._DEFAULT_UNIVERSE, + default_mtls_endpoint=ManagedRulesetsClient.DEFAULT_MTLS_ENDPOINT, + default_endpoint_template=ManagedRulesetsClient._DEFAULT_ENDPOINT_TEMPLATE, + use_mtls=self._use_mtls_endpoint == "always" + or (self._use_mtls_endpoint == "auto" and self._client_cert_source), + ) + + 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[ManagedRulesetsTransport], Callable[..., ManagedRulesetsTransport] + ] = ( + ManagedRulesetsClient.get_transport_class(transport) + if isinstance(transport, str) or transport is None + else cast(Callable[..., ManagedRulesetsTransport], 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_v1.ManagedRulesetsClient`.", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "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.v1.ManagedRulesets", + "credentialsType": None, + }, + ) + + def get( + self, + request: Optional[Union[compute.GetManagedRulesetRequest, dict]] = None, + *, + project: Optional[str] = None, + managed_ruleset: 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.ManagedRuleset: + r"""Gets the details for the specified managed ruleset + name. + + .. 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_v1 + + def sample_get(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.GetManagedRulesetRequest( + managed_ruleset="managed_ruleset_value", + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.GetManagedRulesetRequest, dict]): + The request object. A request message for + ManagedRulesets.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. + managed_ruleset (str): + Name of the managed ruleset to + return. + + This corresponds to the ``managed_ruleset`` 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_v1.types.ManagedRuleset: + Represents a ManagedRuleset resource. + + Managed internally by Cloud Armor CLH + for Managed Rules features. Customers + can only view these resources to modify + their Security Policies. For more + information, see + https://cloud.google.com/armor/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, managed_ruleset] + 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.GetManagedRulesetRequest): + request = compute.GetManagedRulesetRequest(request) + # If we have keyword arguments corresponding to fields on the + # request, apply these. + if project is not None: + request.project = project + if managed_ruleset is not None: + request.managed_ruleset = managed_ruleset + + # 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), + ("managed_ruleset", request.managed_ruleset), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 list( + self, + request: Optional[Union[compute.ListManagedRulesetsRequest, 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 all the managed rulesets + available. + + .. 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_v1 + + def sample_list(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.ListManagedRulesetsRequest( + 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_v1.types.ListManagedRulesetsRequest, dict]): + The request object. A request message for + ManagedRulesets.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_v1.services.managed_rulesets.pagers.ListPager: + 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.ListManagedRulesetsRequest): + request = compute.ListManagedRulesetsRequest(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),)), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 __enter__(self) -> "ManagedRulesetsClient": + 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__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + +__all__ = ("ManagedRulesetsClient",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py new file mode 100644 index 000000000000..78b56cc35347 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/pagers.py @@ -0,0 +1,117 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + + +class ListPager: + """A pager for iterating through ``list`` requests. + + This class thinly wraps an initial + :class:`google.cloud.compute_v1.types.ManagedRulesetList` 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_v1.types.ManagedRulesetList` + 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.ManagedRulesetList], + request: compute.ListManagedRulesetsRequest, + response: compute.ManagedRulesetList, + *, + 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_v1.types.ListManagedRulesetsRequest): + The initial request object. + response (google.cloud.compute_v1.types.ManagedRulesetList): + 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.ListManagedRulesetsRequest(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.ManagedRulesetList]: + 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.ManagedRuleset]: + 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/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst new file mode 100644 index 000000000000..f54dedabc457 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/README.rst @@ -0,0 +1,10 @@ + +transport inheritance structure +_______________________________ + +``ManagedRulesetsTransport`` is the ABC for all transports. + +- public child ``ManagedRulesetsGrpcTransport`` for sync gRPC transport (defined in ``grpc.py``). +- public child ``ManagedRulesetsGrpcAsyncIOTransport`` for async gRPC transport (defined in ``grpc_asyncio.py``). +- private child ``_BaseManagedRulesetsRestTransport`` for base REST transport with inner classes ``_BaseMETHOD`` (defined in ``rest_base.py``). +- public child ``ManagedRulesetsRestTransport`` for sync REST transport with inner classes ``METHOD`` derived from the parent's corresponding ``_BaseMETHOD`` classes (defined in ``rest.py``). diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py new file mode 100644 index 000000000000..ea7086941754 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/__init__.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 ManagedRulesetsTransport +from .rest import ManagedRulesetsRestInterceptor, ManagedRulesetsRestTransport + +# Compile a registry of transports. +_transport_registry = OrderedDict() # type: Dict[str, Type[ManagedRulesetsTransport]] +_transport_registry["rest"] = ManagedRulesetsRestTransport + +__all__ = ( + "ManagedRulesetsTransport", + "ManagedRulesetsRestTransport", + "ManagedRulesetsRestInterceptor", +) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py new file mode 100644 index 000000000000..138fb9dd7e92 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/base.py @@ -0,0 +1,211 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 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_v1 import gapic_version as package_version +from google.cloud.compute_v1.types import compute + +DEFAULT_CLIENT_INFO = gapic_v1.client_info.ClientInfo( + gapic_version=package_version.__version__ +) +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ManagedRulesetsTransport(abc.ABC): + """Abstract transport class for ManagedRulesets.""" + + AUTH_SCOPES = ( + "https://www.googleapis.com/auth/compute.readonly", + "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. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + + # 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 + + self._wrapped_methods: Dict[Callable, Callable] = {} + + @property + def host(self): + return self._host + + def _prep_wrapped_messages(self, client_info): + # Precompute the wrapped methods. + self._wrapped_methods = { + self.get: gapic_v1.method.wrap_method( + self.get, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + client_info=client_info, + ), + self.list: gapic_v1.method.wrap_method( + self.list, + default_retry=retries.Retry( + initial=0.1, + maximum=60.0, + multiplier=1.3, + predicate=retries.if_exception_type( + core_exceptions.DeadlineExceeded, + core_exceptions.ServiceUnavailable, + ), + deadline=600.0, + ), + default_timeout=600.0, + 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 get( + self, + ) -> Callable[ + [compute.GetManagedRulesetRequest], + Union[compute.ManagedRuleset, Awaitable[compute.ManagedRuleset]], + ]: + raise NotImplementedError() + + @property + def list( + self, + ) -> Callable[ + [compute.ListManagedRulesetsRequest], + Union[compute.ManagedRulesetList, Awaitable[compute.ManagedRulesetList]], + ]: + raise NotImplementedError() + + @property + def kind(self) -> str: + raise NotImplementedError() + + +__all__ = ("ManagedRulesetsTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py new file mode 100644 index 000000000000..711d3259b23a --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest.py @@ -0,0 +1,607 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1._compat import transcode_request +from google.cloud.compute_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO as BASE_DEFAULT_CLIENT_INFO +from .rest_base import _BaseManagedRulesetsRestTransport + +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}", +) + +DEFAULT_CLIENT_INFO.protobuf_runtime_version = google.protobuf.__version__ + + +class ManagedRulesetsRestInterceptor: + """Interceptor for ManagedRulesets. + + 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 ManagedRulesetsRestTransport. + + .. code-block:: python + class MyCustomManagedRulesetsInterceptor(ManagedRulesetsRestInterceptor): + 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_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 + + transport = ManagedRulesetsRestTransport(interceptor=MyCustomManagedRulesetsInterceptor()) + client = ManagedRulesetsClient(transport=transport) + + + """ + + def pre_get( + self, + request: compute.GetManagedRulesetRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.GetManagedRulesetRequest, 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 ManagedRulesets server. + """ + return request, metadata + + def post_get(self, response: compute.ManagedRuleset) -> compute.ManagedRuleset: + """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 ManagedRulesets 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.ManagedRuleset, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ManagedRuleset, 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 ManagedRulesets 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_list( + self, + request: compute.ListManagedRulesetsRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.ListManagedRulesetsRequest, 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 ManagedRulesets server. + """ + return request, metadata + + def post_list( + self, response: compute.ManagedRulesetList + ) -> compute.ManagedRulesetList: + """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 ManagedRulesets 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.ManagedRulesetList, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[compute.ManagedRulesetList, 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 ManagedRulesets 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 + + +@dataclasses.dataclass +class ManagedRulesetsRestStub: + _session: AuthorizedSession + _host: str + _interceptor: ManagedRulesetsRestInterceptor + + +class ManagedRulesetsRestTransport(_BaseManagedRulesetsRestTransport): + """REST backend synchronous transport for ManagedRulesets. + + The ManagedRulesets 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[ManagedRulesetsRestInterceptor] = 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. + interceptor (Optional[ManagedRulesetsRestInterceptor]): Interceptor used + to manipulate requests, request metadata, and responses. + api_audience (Optional[str]): The intended audience for the API calls + to the service that will be set when using certain 3rd party + authentication flows. Audience is typically a resource identifier. + If not set, the host value will be used as a default. + """ + # 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 ManagedRulesetsRestInterceptor() + self._prep_wrapped_messages(client_info) + + class _Get(_BaseManagedRulesetsRestTransport._BaseGet, ManagedRulesetsRestStub): + def __hash__(self): + return hash("ManagedRulesetsRestTransport.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.GetManagedRulesetRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ManagedRuleset: + r"""Call the get method over HTTP. + + Args: + request (~.compute.GetManagedRulesetRequest): + The request object. A request message for + ManagedRulesets.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.ManagedRuleset: + Represents a ManagedRuleset resource. + + Managed internally by Cloud Armor CLH + for Managed Rules features. Customers + can only view these resources to modify + their Security Policies. For more + information, see + https://cloud.google.com/armor/docs/. + + """ + + http_options = ( + _BaseManagedRulesetsRestTransport._BaseGet._get_http_options() + ) + request, metadata = self._interceptor.pre_get(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseManagedRulesetsRestTransport._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ManagedRulesetsClient.Get", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "Get", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ManagedRulesetsRestTransport._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.ManagedRuleset() + pb_resp = compute.ManagedRuleset.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.ManagedRuleset.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_v1.ManagedRulesetsClient.get", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "Get", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + class _List(_BaseManagedRulesetsRestTransport._BaseList, ManagedRulesetsRestStub): + def __hash__(self): + return hash("ManagedRulesetsRestTransport.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.ListManagedRulesetsRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.ManagedRulesetList: + r"""Call the list method over HTTP. + + Args: + request (~.compute.ListManagedRulesetsRequest): + The request object. A request message for + ManagedRulesets.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.ManagedRulesetList: + + """ + + http_options = ( + _BaseManagedRulesetsRestTransport._BaseList._get_http_options() + ) + request, metadata = self._interceptor.pre_list(request, metadata) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseManagedRulesetsRestTransport._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.ManagedRulesetsClient.List", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "List", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = ManagedRulesetsRestTransport._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.ManagedRulesetList() + pb_resp = compute.ManagedRulesetList.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.ManagedRulesetList.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_v1.ManagedRulesetsClient.list", + extra={ + "serviceName": "google.cloud.compute.v1.ManagedRulesets", + "rpcName": "List", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + + @property + def get( + self, + ) -> Callable[[compute.GetManagedRulesetRequest], compute.ManagedRuleset]: + # 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 list( + self, + ) -> Callable[[compute.ListManagedRulesetsRequest], compute.ManagedRulesetList]: + # 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 kind(self) -> str: + return "rest" + + def close(self): + self._session.close() + + +__all__ = ("ManagedRulesetsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py new file mode 100644 index 000000000000..56c8256d6798 --- /dev/null +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/managed_rulesets/transports/rest_base.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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_v1.types import compute + +from .base import DEFAULT_CLIENT_INFO, ManagedRulesetsTransport + + +class _BaseManagedRulesetsRestTransport(ManagedRulesetsTransport): + """Base REST backend transport for ManagedRulesets. + + 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 _BaseGet: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/global/managedRulesets/{managed_ruleset}", + }, + ] + return http_options + + class _BaseList: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "get", + "uri": "/compute/v1/projects/{project}/global/managedRulesets", + }, + ] + return http_options + + +__all__ = ("_BaseManagedRulesetsRestTransport",) diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py index 7d433cebbfb4..569433769659 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_attachments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworkAttachmentsClient(metaclass=NetworkAttachmentsClientMeta): - """The NetworkAttachments API.""" + """The NetworkAttachments API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -823,6 +835,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -957,6 +974,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1116,6 +1138,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1282,6 +1309,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1413,6 +1445,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1544,6 +1581,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1693,6 +1735,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1853,6 +1900,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2002,6 +2054,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2210,6 +2267,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2363,6 +2425,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py index cf93355c61b4..c3a51a7c593e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_edge_security_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class NetworkEdgeSecurityServicesClient( metaclass=NetworkEdgeSecurityServicesClientMeta ): - """The NetworkEdgeSecurityServices API.""" + """The NetworkEdgeSecurityServices API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -686,6 +693,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -977,6 +994,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1142,6 +1164,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1280,6 +1307,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1418,6 +1450,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1601,6 +1638,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1759,6 +1801,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py index 753585a964e5..b915336e1770 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_endpoint_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworkEndpointGroupsClient(metaclass=NetworkEndpointGroupsClientMeta): - """The NetworkEndpointGroups API.""" + """The NetworkEndpointGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -847,6 +859,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1007,6 +1024,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1175,6 +1197,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1318,6 +1345,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1503,6 +1535,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1663,6 +1700,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1849,6 +1891,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2002,6 +2049,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2155,6 +2207,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2307,6 +2364,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2480,6 +2542,11 @@ def sample_list_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2641,6 +2708,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py index a2adf46b47a6..42cbbba0c877 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_firewall_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworkFirewallPoliciesClient(metaclass=NetworkFirewallPoliciesClientMeta): - """The NetworkFirewallPolicies API.""" + """The NetworkFirewallPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -705,6 +712,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -847,6 +859,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1011,6 +1028,11 @@ def sample_add_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1151,6 +1173,11 @@ def sample_add_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1308,6 +1335,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1441,6 +1473,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1583,6 +1620,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1719,6 +1761,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1844,6 +1891,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1993,6 +2045,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2118,6 +2175,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2263,6 +2325,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2386,6 +2453,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2540,6 +2612,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2674,6 +2751,11 @@ def sample_get_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2801,6 +2883,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2919,6 +3006,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3037,6 +3129,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3173,6 +3270,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3318,6 +3420,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3452,6 +3559,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3616,6 +3728,11 @@ def sample_patch_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3756,6 +3873,11 @@ def sample_patch_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3913,6 +4035,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4046,6 +4173,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4198,6 +4330,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4326,6 +4463,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4482,6 +4624,11 @@ def sample_remove_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4614,6 +4761,11 @@ def sample_remove_packet_mirroring_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4763,6 +4915,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4888,6 +5045,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5078,6 +5240,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5216,6 +5383,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py index 7029d6f895be..f8a414b6208a 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/network_profiles/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class NetworkProfilesClient(metaclass=NetworkProfilesClientMeta): - """The NetworkProfiles API.""" + """The NetworkProfiles API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -790,6 +802,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py index 7000b325e2fc..27a60ce1ddea 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/networks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NetworksClient(metaclass=NetworksClientMeta): - """The Networks API.""" + """The Networks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -691,6 +698,11 @@ def sample_add_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -826,6 +838,11 @@ def sample_add_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -996,6 +1013,11 @@ def sample_cancel_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1142,6 +1164,11 @@ def sample_cancel_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1287,6 +1314,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1408,6 +1440,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1556,6 +1593,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1677,6 +1719,11 @@ def sample_get_effective_firewalls(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1840,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1909,6 +1961,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2044,6 +2101,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2179,6 +2241,11 @@ def sample_list_peering_routes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2319,6 +2386,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2448,6 +2520,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2607,6 +2684,11 @@ def sample_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2742,6 +2824,11 @@ def sample_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2909,6 +2996,11 @@ def sample_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3052,6 +3144,11 @@ def sample_request_remove_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3198,6 +3295,11 @@ def sample_switch_to_custom_mode(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3320,6 +3422,11 @@ def sample_switch_to_custom_mode(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3482,6 +3589,11 @@ def sample_update_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3620,6 +3732,11 @@ def sample_update_peering(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py index 236a57c779a1..ae1024c6dece 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NodeGroupsClient(metaclass=NodeGroupsClientMeta): - """The NodeGroups API.""" + """The NodeGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -706,6 +713,11 @@ def sample_add_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -856,6 +868,11 @@ def sample_add_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -994,6 +1011,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1140,6 +1162,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1275,6 +1302,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1452,6 +1484,11 @@ def sample_delete_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1604,6 +1641,11 @@ def sample_delete_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1773,6 +1815,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1937,6 +1984,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2080,6 +2132,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2223,6 +2280,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2377,6 +2439,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2525,6 +2592,11 @@ def sample_list_nodes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2679,6 +2751,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2822,6 +2899,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3002,6 +3084,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3157,6 +3244,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3356,6 +3448,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3508,6 +3605,11 @@ def sample_set_node_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3660,6 +3762,11 @@ def sample_set_node_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3843,6 +3950,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4001,6 +4113,11 @@ def sample_simulate_maintenance_event(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4174,6 +4291,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py index ffc2c8414a87..f7eed37b8f73 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_templates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class NodeTemplatesClient(metaclass=NodeTemplatesClientMeta): - """The NodeTemplates API.""" + """The NodeTemplates API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -816,6 +828,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -951,6 +968,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1113,6 +1135,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1277,6 +1304,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1409,6 +1441,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1541,6 +1578,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1694,6 +1736,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1886,6 +1933,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2039,6 +2091,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py index 059ed2635389..8ec988d23713 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/node_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class NodeTypesClient(metaclass=NodeTypesClientMeta): - """The NodeTypes API.""" + """The NodeTypes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -665,6 +672,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -816,6 +828,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -943,6 +960,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py index f2878de908e6..75e281bffe21 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/organization_security_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class OrganizationSecurityPoliciesClient( metaclass=OrganizationSecurityPoliciesClientMeta ): - """The OrganizationSecurityPolicies API.""" + """The OrganizationSecurityPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -707,6 +714,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -845,6 +857,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -994,6 +1011,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1120,6 +1142,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1261,6 +1288,11 @@ def sample_copy_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1379,6 +1411,11 @@ def sample_copy_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1520,6 +1557,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1638,6 +1680,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1781,6 +1828,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1900,6 +1952,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2020,6 +2077,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2128,6 +2190,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2236,6 +2303,11 @@ def sample_insert(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.insert] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2348,6 +2420,11 @@ def sample_list(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2445,6 +2522,11 @@ def sample_list_associations(): # and friendly error handling. rpc = self._transport._wrapped_methods[self._transport.list_associations] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2534,6 +2616,11 @@ def sample_list_preconfigured_expression_sets(): self._transport.list_preconfigured_expression_sets ] + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2652,6 +2739,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2770,6 +2862,11 @@ def sample_move(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2920,6 +3017,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3046,6 +3148,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3195,6 +3302,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3321,6 +3433,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3467,6 +3584,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3590,6 +3712,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3731,6 +3858,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3849,6 +3981,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py index 9e16d31509b4..661a59bdcb90 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/packet_mirrorings/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PacketMirroringsClient(metaclass=PacketMirroringsClientMeta): - """The PacketMirrorings API.""" + """The PacketMirrorings API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1120,6 +1142,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1251,6 +1278,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1382,6 +1414,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1533,6 +1570,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1693,6 +1735,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1842,6 +1889,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2020,6 +2072,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py index 846ae0fbeb32..e230cc366513 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/preview_features/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PreviewFeaturesClient(metaclass=PreviewFeaturesClientMeta): - """The PreviewFeatures API.""" + """The PreviewFeatures API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -681,6 +688,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -790,6 +802,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -933,6 +950,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1065,6 +1087,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py index e8b9f2faf1ac..ead3dc8f05ac 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/project_views/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -108,7 +115,7 @@ def get_transport_class( class ProjectViewsClient(metaclass=ProjectViewsClientMeta): - """The ProjectViews API.""" + """The ProjectViews API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -687,6 +694,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py index 7444f968fe37..7215e25d9fce 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/projects/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ProjectsClient(metaclass=ProjectsClientMeta): - """The Projects API.""" + """The Projects API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -663,6 +670,11 @@ def sample_disable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -770,6 +782,11 @@ def sample_disable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -914,6 +931,11 @@ def sample_disable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1034,6 +1056,11 @@ def sample_disable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1165,6 +1192,11 @@ def sample_enable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1272,6 +1304,11 @@ def sample_enable_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1417,6 +1454,11 @@ def sample_enable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1538,6 +1580,11 @@ def sample_enable_xpn_resource(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1681,6 +1728,11 @@ def sample_get(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1845,11 @@ def sample_get_xpn_host(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1903,6 +1960,11 @@ def sample_get_xpn_resources(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2036,6 +2098,11 @@ def sample_list_xpn_hosts(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2176,6 +2243,11 @@ def sample_move_disk(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2305,6 +2377,11 @@ def sample_move_disk(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2452,6 +2529,11 @@ def sample_move_instance(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2575,6 +2657,11 @@ def sample_move_instance(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2722,6 +2809,11 @@ def sample_set_cloud_armor_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2845,6 +2937,11 @@ def sample_set_cloud_armor_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2990,6 +3087,11 @@ def sample_set_common_instance_metadata(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3111,6 +3213,11 @@ def sample_set_common_instance_metadata(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3259,6 +3366,11 @@ def sample_set_default_network_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3383,6 +3495,11 @@ def sample_set_default_network_tier(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3527,6 +3644,11 @@ def sample_set_usage_export_bucket(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3647,6 +3769,11 @@ def sample_set_usage_export_bucket(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py index 5708f8e097c8..b1e4d3ecaec7 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_advertised_prefixes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PublicAdvertisedPrefixesClient(metaclass=PublicAdvertisedPrefixesClientMeta): - """The PublicAdvertisedPrefixes API.""" + """The PublicAdvertisedPrefixes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -813,6 +825,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -962,6 +979,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1087,6 +1109,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1364,6 +1396,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1487,6 +1524,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1622,6 +1664,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1777,6 +1824,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1921,6 +1973,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2070,6 +2127,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2195,6 +2257,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py index 40da4860ea45..7c7671728d20 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/public_delegated_prefixes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class PublicDelegatedPrefixesClient(metaclass=PublicDelegatedPrefixesClientMeta): - """The PublicDelegatedPrefixes API.""" + """The PublicDelegatedPrefixes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -832,6 +844,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -971,6 +988,11 @@ def sample_announce(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1132,6 +1154,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1268,6 +1295,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1434,6 +1466,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1571,6 +1608,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1708,6 +1750,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1859,6 +1906,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2025,6 +2077,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2180,6 +2237,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2344,6 +2406,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2483,6 +2550,11 @@ def sample_withdraw(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py index 896de722cefa..f8f5138b821f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_autoscalers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionAutoscalersClient(metaclass=RegionAutoscalersClientMeta): - """The RegionAutoscalers API.""" + """The RegionAutoscalers API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -694,6 +701,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -827,6 +839,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1000,6 +1017,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1132,6 +1154,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1264,6 +1291,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1417,6 +1449,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1562,6 +1599,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1696,6 +1738,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1874,6 +1921,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2006,6 +2058,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2138,6 +2195,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py index e1d2b8ee9e8a..4f669ae8c32e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_buckets/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionBackendBucketsClient(metaclass=RegionBackendBucketsClientMeta): - """The RegionBackendBuckets API.""" + """The RegionBackendBuckets API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -697,6 +704,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -833,6 +845,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -998,6 +1015,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1164,6 +1186,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1295,6 +1322,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1426,6 +1458,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1577,6 +1614,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1717,6 +1759,11 @@ def sample_list_usable(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1874,6 +1921,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2020,6 +2072,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2228,6 +2285,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2383,6 +2445,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py index 2ccf8099ad1e..91bcaf290091 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_backend_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionBackendServicesClient(metaclass=RegionBackendServicesClientMeta): - """The RegionBackendServices API.""" + """The RegionBackendServices API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1015,6 +1032,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1168,6 +1190,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1334,6 +1361,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1470,6 +1502,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1606,6 +1643,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1760,6 +1802,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1905,6 +1952,11 @@ def sample_list_usable(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2064,6 +2116,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2212,6 +2269,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2420,6 +2482,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2579,6 +2646,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2738,6 +2810,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2918,6 +2995,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3066,6 +3148,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3214,6 +3301,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py index 3ffa31ae566c..2191e7eb8b45 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_commitments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionCommitmentsClient(metaclass=RegionCommitmentsClientMeta): - """The RegionCommitments API.""" + """The RegionCommitments API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -955,6 +972,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1085,6 +1107,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1236,6 +1263,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1391,6 +1423,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1535,6 +1572,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py index 4b183dd72c43..5663c1dbb52f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_composite_health_checks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionCompositeHealthChecksClient( metaclass=RegionCompositeHealthChecksClientMeta ): - """The RegionCompositeHealthChecks API.""" + """The RegionCompositeHealthChecks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -688,6 +695,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -975,6 +992,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1144,6 +1166,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1284,6 +1311,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1421,6 +1453,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1558,6 +1595,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1711,6 +1753,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1878,6 +1925,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2034,6 +2086,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2216,6 +2273,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py index c4d4adc21bcd..f8f27eeb4a2c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disk_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionDiskTypesClient(metaclass=RegionDiskTypesClientMeta): - """The RegionDiskTypes API.""" + """The RegionDiskTypes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -704,6 +711,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -830,6 +842,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py index fdf6af5e50a8..65561ab0f4f8 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_disks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionDisksClient(metaclass=RegionDisksClientMeta): - """The RegionDisks API.""" + """The RegionDisks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -710,6 +717,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -864,6 +876,11 @@ def sample_add_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1024,6 +1041,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1159,6 +1181,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1329,6 +1356,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1474,6 +1506,11 @@ def sample_create_snapshot(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1636,6 +1673,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1773,6 +1815,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1949,6 +1996,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2113,6 +2165,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2243,6 +2300,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2373,6 +2435,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2524,6 +2591,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2687,6 +2759,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2839,6 +2916,11 @@ def sample_remove_resource_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3007,6 +3089,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3150,6 +3237,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3356,6 +3448,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3506,6 +3603,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3656,6 +3758,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3834,6 +3941,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3987,6 +4099,11 @@ def sample_start_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4149,6 +4266,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4286,6 +4408,11 @@ def sample_stop_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4458,6 +4585,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4605,6 +4737,11 @@ def sample_stop_group_async_replication(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4783,6 +4920,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4926,6 +5068,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5069,6 +5216,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5248,6 +5400,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5402,6 +5559,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py index 7c479af102cb..63a2c37efca7 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_aggregation_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -117,7 +124,7 @@ def get_transport_class( class RegionHealthAggregationPoliciesClient( metaclass=RegionHealthAggregationPoliciesClientMeta ): - """The RegionHealthAggregationPolicies API.""" + """The RegionHealthAggregationPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -695,6 +702,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -844,6 +856,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -982,6 +999,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1150,6 +1172,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1289,6 +1316,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1428,6 +1460,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1581,6 +1618,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1752,6 +1794,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1912,6 +1959,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2094,6 +2146,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py index e564162897a3..0bfe244d7c1c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_check_services/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionHealthCheckServicesClient(metaclass=RegionHealthCheckServicesClientMeta): - """The RegionHealthCheckServices API.""" + """The RegionHealthCheckServices API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -684,6 +691,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -833,6 +845,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -971,6 +988,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1135,6 +1157,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1270,6 +1297,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1405,6 +1437,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1559,6 +1596,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1724,6 +1766,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1878,6 +1925,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2058,6 +2110,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py index 543657447889..a1dbe1523d88 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_checks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionHealthChecksClient(metaclass=RegionHealthChecksClientMeta): - """The RegionHealthChecks API.""" + """The RegionHealthChecks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -696,6 +703,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -831,6 +843,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1016,6 +1033,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1148,6 +1170,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1280,6 +1307,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1433,6 +1465,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1590,6 +1627,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1736,6 +1778,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1914,6 +1961,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2058,6 +2110,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2202,6 +2259,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py index a9ae6ba4616b..00cef8cb189d 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_health_sources/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionHealthSourcesClient(metaclass=RegionHealthSourcesClientMeta): - """The RegionHealthSources API.""" + """The RegionHealthSources API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -827,6 +839,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -963,6 +980,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1129,6 +1151,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1269,6 +1296,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1402,6 +1434,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1535,6 +1572,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1686,6 +1728,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1844,6 +1891,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1991,6 +2043,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2169,6 +2226,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py index f859112e1b9f..c19b6ac594aa 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_manager_resize_requests/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -119,7 +126,7 @@ def get_transport_class( class RegionInstanceGroupManagerResizeRequestsClient( metaclass=RegionInstanceGroupManagerResizeRequestsClientMeta ): - """The RegionInstanceGroupManagerResizeRequests API.""" + """The RegionInstanceGroupManagerResizeRequests API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -738,6 +745,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -897,6 +909,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1081,6 +1098,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1240,6 +1262,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1426,6 +1453,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1588,6 +1620,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1787,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1921,6 +1963,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py index d2f47add6ae0..2c32de34542b 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_group_managers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionInstanceGroupManagersClient( metaclass=RegionInstanceGroupManagersClientMeta ): - """The RegionInstanceGroupManagers API.""" + """The RegionInstanceGroupManagers API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -741,6 +748,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -915,6 +927,11 @@ def sample_abandon_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1104,6 +1121,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1268,6 +1290,11 @@ def sample_apply_updates_to_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1458,6 +1485,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1623,6 +1655,11 @@ def sample_create_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1786,6 +1823,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1924,6 +1966,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2123,6 +2170,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2297,6 +2349,11 @@ def sample_delete_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2486,6 +2543,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2650,6 +2712,11 @@ def sample_delete_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2823,6 +2890,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2969,6 +3041,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3115,6 +3192,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3270,6 +3352,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3426,6 +3513,11 @@ def sample_list_errors(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3585,6 +3677,11 @@ def sample_list_managed_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3745,6 +3842,11 @@ def sample_list_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3924,6 +4026,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4092,6 +4199,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4283,6 +4395,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4449,6 +4566,11 @@ def sample_patch_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4647,6 +4769,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4820,6 +4947,11 @@ def sample_recreate_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5007,6 +5139,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5169,6 +5306,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5369,6 +5511,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5544,6 +5691,11 @@ def sample_resume_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5729,6 +5881,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5889,6 +6046,11 @@ def sample_set_instance_template(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6071,6 +6233,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6228,6 +6395,11 @@ def sample_set_target_pools(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6428,6 +6600,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6603,6 +6780,11 @@ def sample_start_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -6817,6 +6999,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7006,6 +7193,11 @@ def sample_stop_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7218,6 +7410,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7405,6 +7602,11 @@ def sample_suspend_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7596,6 +7798,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -7762,6 +7969,11 @@ def sample_update_per_instance_configs(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py index 4ddb4d057866..c7c02c4d0b22 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionInstanceGroupsClient(metaclass=RegionInstanceGroupsClientMeta): - """The RegionInstanceGroups API.""" + """The RegionInstanceGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -717,6 +724,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -845,6 +857,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1016,6 +1033,11 @@ def sample_list_instances(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1182,6 +1204,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1337,6 +1364,11 @@ def sample_set_named_ports(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1517,6 +1549,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py index c84f8a8e0f91..35c21fa5ca4c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instance_templates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionInstanceTemplatesClient(metaclass=RegionInstanceTemplatesClientMeta): - """The RegionInstanceTemplates API.""" + """The RegionInstanceTemplates API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -701,6 +708,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -839,6 +851,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1014,6 +1031,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1149,6 +1171,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1284,6 +1311,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1439,6 +1471,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py index 73fbe700ff31..662600b8ed0d 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instances/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class RegionInstancesClient(metaclass=RegionInstancesClientMeta): - """The RegionInstances API.""" + """The RegionInstances API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -693,6 +700,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -829,6 +841,11 @@ def sample_bulk_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py index a6ab70c1ed8c..9a95a96c98d4 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshot_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionInstantSnapshotGroupsClient( metaclass=RegionInstantSnapshotGroupsClientMeta ): - """The RegionInstantSnapshotGroups API.""" + """The RegionInstantSnapshotGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -704,6 +711,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -841,6 +853,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1008,6 +1025,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1176,6 +1198,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1309,6 +1336,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1442,6 +1474,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1597,6 +1634,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1835,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1950,6 +1997,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py index 0e056cdef14f..45af8c4464b4 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_instant_snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionInstantSnapshotsClient(metaclass=RegionInstantSnapshotsClientMeta): - """The RegionInstantSnapshots API.""" + """The RegionInstantSnapshots API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -707,6 +714,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -853,6 +865,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1016,6 +1033,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1182,6 +1204,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1313,6 +1340,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1444,6 +1476,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1599,6 +1636,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1793,6 +1835,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1947,6 +1994,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2101,6 +2153,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2281,6 +2338,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py index f539f2428c8a..5ff639564831 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_endpoint_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionNetworkEndpointGroupsClient( metaclass=RegionNetworkEndpointGroupsClientMeta ): - """The RegionNetworkEndpointGroups API.""" + """The RegionNetworkEndpointGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -730,6 +737,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -893,6 +905,11 @@ def sample_attach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1059,6 +1076,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1200,6 +1222,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1388,6 +1415,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1551,6 +1583,11 @@ def sample_detach_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1739,6 +1776,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1892,6 +1934,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2045,6 +2092,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2200,6 +2252,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2358,6 +2415,11 @@ def sample_list_network_endpoints(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py index aaae957ec3de..49ee2e2f30c9 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionNetworkFirewallPoliciesClient( metaclass=RegionNetworkFirewallPoliciesClientMeta ): - """The RegionNetworkFirewallPolicies API.""" + """The RegionNetworkFirewallPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -726,6 +733,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -883,6 +895,11 @@ def sample_add_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1058,6 +1075,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1208,6 +1230,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1373,6 +1400,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1513,6 +1545,11 @@ def sample_clone_rules(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1675,6 +1712,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1812,6 +1854,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1972,6 +2019,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2109,6 +2161,11 @@ def sample_get_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2245,6 +2302,11 @@ def sample_get_effective_firewalls(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2413,6 +2475,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2552,6 +2619,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2686,6 +2758,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2820,6 +2897,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2974,6 +3056,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3130,6 +3217,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3275,6 +3367,364 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 patch_association_unary( + self, + request: Optional[ + Union[compute.PatchAssociationRegionNetworkFirewallPolicyRequest, dict] + ] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + firewall_policy: Optional[str] = None, + firewall_policy_association_resource: Optional[ + compute.FirewallPolicyAssociation + ] = 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 an association for the specified network + firewall 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_v1 + + def sample_patch_association(): + # Create a client + client = compute_v1.RegionNetworkFirewallPoliciesClient() + + # Initialize request argument(s) + request = compute_v1.PatchAssociationRegionNetworkFirewallPolicyRequest( + firewall_policy="firewall_policy_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch_association(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchAssociationRegionNetworkFirewallPolicyRequest, dict]): + The request object. A request message for + RegionNetworkFirewallPolicies.PatchAssociation. + 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 scoping this + request. + + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy (str): + Name of the firewall policy to + update. + + This corresponds to the ``firewall_policy`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): + The body resource for this request + This corresponds to the ``firewall_policy_association_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, + firewall_policy, + firewall_policy_association_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.PatchAssociationRegionNetworkFirewallPolicyRequest + ): + request = compute.PatchAssociationRegionNetworkFirewallPolicyRequest( + 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 firewall_policy is not None: + request.firewall_policy = firewall_policy + if firewall_policy_association_resource is not None: + request.firewall_policy_association_resource = ( + firewall_policy_association_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch_association] + + # 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), + ("firewall_policy", request.firewall_policy), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + + # 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 patch_association( + self, + request: Optional[ + Union[compute.PatchAssociationRegionNetworkFirewallPolicyRequest, dict] + ] = None, + *, + project: Optional[str] = None, + region: Optional[str] = None, + firewall_policy: Optional[str] = None, + firewall_policy_association_resource: Optional[ + compute.FirewallPolicyAssociation + ] = 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 an association for the specified network + firewall 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_v1 + + def sample_patch_association(): + # Create a client + client = compute_v1.RegionNetworkFirewallPoliciesClient() + + # Initialize request argument(s) + request = compute_v1.PatchAssociationRegionNetworkFirewallPolicyRequest( + firewall_policy="firewall_policy_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch_association(request=request) + + # Handle the response + print(response) + + Args: + request (Union[google.cloud.compute_v1.types.PatchAssociationRegionNetworkFirewallPolicyRequest, dict]): + The request object. A request message for + RegionNetworkFirewallPolicies.PatchAssociation. + 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 scoping this + request. + + This corresponds to the ``region`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy (str): + Name of the firewall policy to + update. + + This corresponds to the ``firewall_policy`` field + on the ``request`` instance; if ``request`` is provided, this + should not be set. + firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): + The body resource for this request + This corresponds to the ``firewall_policy_association_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, + firewall_policy, + firewall_policy_association_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.PatchAssociationRegionNetworkFirewallPolicyRequest + ): + request = compute.PatchAssociationRegionNetworkFirewallPolicyRequest( + 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 firewall_policy is not None: + request.firewall_policy = firewall_policy + if firewall_policy_association_resource is not None: + request.firewall_policy_association_resource = ( + firewall_policy_association_resource + ) + + # Wrap the RPC method; this adds retry and timeout information, + # and friendly error handling. + rpc = self._transport._wrapped_methods[self._transport.patch_association] + + # 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), + ("firewall_policy", request.firewall_policy), + ) + ), + ) + + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3450,6 +3900,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3600,6 +4055,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3767,6 +4227,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3909,6 +4374,11 @@ def sample_remove_association(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4073,6 +4543,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4212,6 +4687,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4422,6 +4902,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4579,6 +5064,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py index c801b72714cd..dd0ae00465cb 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/base.py @@ -265,6 +265,11 @@ def _prep_wrapped_messages(self, client_info): default_timeout=600.0, client_info=client_info, ), + self.patch_association: gapic_v1.method.wrap_method( + self.patch_association, + default_timeout=600.0, + client_info=client_info, + ), self.patch_rule: gapic_v1.method.wrap_method( self.patch_rule, default_timeout=600.0, @@ -417,6 +422,15 @@ def patch( ]: raise NotImplementedError() + @property + def patch_association( + self, + ) -> Callable[ + [compute.PatchAssociationRegionNetworkFirewallPolicyRequest], + Union[compute.Operation, Awaitable[compute.Operation]], + ]: + raise NotImplementedError() + @property def patch_rule( self, diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py index f324719bf0e3..e6715700f8ff 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest.py @@ -168,6 +168,14 @@ def post_patch(self, response): logging.log(f"Received response: {response}") return response + def pre_patch_association(self, request, metadata): + logging.log(f"Received request: {request}") + return request, metadata + + def post_patch_association(self, response): + logging.log(f"Received response: {response}") + return response + def pre_patch_rule(self, request, metadata): logging.log(f"Received request: {request}") return request, metadata @@ -792,6 +800,53 @@ def post_patch_with_metadata( """ return response, metadata + def pre_patch_association( + self, + request: compute.PatchAssociationRegionNetworkFirewallPolicyRequest, + metadata: Sequence[Tuple[str, Union[str, bytes]]], + ) -> Tuple[ + compute.PatchAssociationRegionNetworkFirewallPolicyRequest, + Sequence[Tuple[str, Union[str, bytes]]], + ]: + """Pre-rpc interceptor for patch_association + + Override in a subclass to manipulate the request or metadata + before they are sent to the RegionNetworkFirewallPolicies server. + """ + return request, metadata + + def post_patch_association(self, response: compute.Operation) -> compute.Operation: + """Post-rpc interceptor for patch_association + + DEPRECATED. Please use the `post_patch_association_with_metadata` + interceptor instead. + + Override in a subclass to read or manipulate the response + after it is returned by the RegionNetworkFirewallPolicies server but before + it is returned to user code. This `post_patch_association` interceptor runs + before the `post_patch_association_with_metadata` interceptor. + """ + return response + + def post_patch_association_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_association + + Override in a subclass to read or manipulate the response or metadata after it + is returned by the RegionNetworkFirewallPolicies server but before it is returned to user code. + + We recommend only using this `post_patch_association_with_metadata` + interceptor in new development instead of the `post_patch_association` interceptor. + When both interceptors are used, this `post_patch_association_with_metadata` interceptor runs after the + `post_patch_association` interceptor. The (possibly modified) response returned by + `post_patch_association` will be passed to + `post_patch_association_with_metadata`. + """ + return response, metadata + def pre_patch_rule( self, request: compute.PatchRuleRegionNetworkFirewallPolicyRequest, @@ -3157,6 +3212,184 @@ def __call__( ) return resp + class _PatchAssociation( + _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchAssociation, + RegionNetworkFirewallPoliciesRestStub, + ): + def __hash__(self): + return hash("RegionNetworkFirewallPoliciesRestTransport.PatchAssociation") + + @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.PatchAssociationRegionNetworkFirewallPolicyRequest, + *, + retry: OptionalRetry = gapic_v1.method.DEFAULT, + timeout: Optional[float] = None, + metadata: Sequence[Tuple[str, Union[str, bytes]]] = (), + ) -> compute.Operation: + r"""Call the patch association method over HTTP. + + Args: + request (~.compute.PatchAssociationRegionNetworkFirewallPolicyRequest): + The request object. A request message for + RegionNetworkFirewallPolicies.PatchAssociation. + 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 = _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchAssociation._get_http_options() + request, metadata = self._interceptor.pre_patch_association( + request, metadata + ) + transcoded_request, body, query_params = transcode_request( + http_options, + request, + required_fields_default_values=getattr( + _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchAssociation, + "_BasePatchAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", + None, + ), + rest_numeric_enums=False, + ) + + 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_v1.RegionNetworkFirewallPoliciesClient.PatchAssociation", + extra={ + "serviceName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies", + "rpcName": "PatchAssociation", + "httpRequest": http_request, + "metadata": http_request["headers"], + }, + ) + + # Send the request + response = RegionNetworkFirewallPoliciesRestTransport._PatchAssociation._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_patch_association(resp) + response_metadata = [(k, str(v)) for k, v in response.headers.items()] + resp, _ = self._interceptor.post_patch_association_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_v1.RegionNetworkFirewallPoliciesClient.patch_association", + extra={ + "serviceName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies", + "rpcName": "PatchAssociation", + "metadata": http_response["headers"], + "httpResponse": http_response, + }, + ) + return resp + class _PatchRule( _BaseRegionNetworkFirewallPoliciesRestTransport._BasePatchRule, RegionNetworkFirewallPoliciesRestStub, @@ -4181,6 +4414,16 @@ def patch( # In C++ this would require a dynamic_cast return self._Patch(self._session, self._host, self._interceptor) # type: ignore + @property + def patch_association( + self, + ) -> Callable[ + [compute.PatchAssociationRegionNetworkFirewallPolicyRequest], 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._PatchAssociation(self._session, self._host, self._interceptor) # type: ignore + @property def patch_rule( self, diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py index 89f72f15c2bc..8a9258e6d72b 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_network_firewall_policies/transports/rest_base.py @@ -287,6 +287,23 @@ def _get_http_options(): ] return http_options + class _BasePatchAssociation: + def __hash__(self): # pragma: NO COVER + return NotImplementedError("__hash__ must be implemented.") + + __REQUIRED_FIELDS_DEFAULT_VALUES: Dict[str, Any] = {} + + @staticmethod + def _get_http_options(): + http_options: List[Dict[str, str]] = [ + { + "method": "post", + "uri": "/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchAssociation", + "body": "firewall_policy_association_resource", + }, + ] + return http_options + class _BasePatchRule: def __hash__(self): # pragma: NO COVER return NotImplementedError("__hash__ must be implemented.") diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py index 20c0e65e83c1..5cd157563e6c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_notification_endpoints/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -114,7 +121,7 @@ def get_transport_class( class RegionNotificationEndpointsClient( metaclass=RegionNotificationEndpointsClientMeta ): - """The RegionNotificationEndpoints API.""" + """The RegionNotificationEndpoints API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -686,6 +693,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -973,6 +990,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1143,6 +1165,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1278,6 +1305,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1413,6 +1445,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1566,6 +1603,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1734,6 +1776,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py index b866f66f5f35..314487b63f86 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionOperationsClient(metaclass=RegionOperationsClientMeta): - """The RegionOperations API.""" + """The RegionOperations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -692,6 +699,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -849,6 +861,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -975,6 +992,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1158,6 +1180,11 @@ def sample_wait(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py index b325231a5f8c..fef5da606cb6 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_security_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSecurityPoliciesClient(metaclass=RegionSecurityPoliciesClientMeta): - """The RegionSecurityPolicies API.""" + """The RegionSecurityPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -711,6 +718,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -861,6 +873,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1023,6 +1040,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1160,6 +1182,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1323,6 +1350,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1462,6 +1494,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1596,6 +1633,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1730,6 +1772,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1883,6 +1930,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2042,6 +2094,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2190,6 +2247,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2367,6 +2429,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2519,6 +2586,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2681,6 +2753,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2818,6 +2895,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2997,6 +3079,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3151,6 +3238,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py index 985ea12274a6..df437665a27f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshot_settings/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class RegionSnapshotSettingsClient(metaclass=RegionSnapshotSettingsClientMeta): - """The RegionSnapshotSettings API.""" + """The RegionSnapshotSettings API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -941,6 +958,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py index 80c59aeee9e5..c4b705b061e5 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSnapshotsClient(metaclass=RegionSnapshotsClientMeta): - """The RegionSnapshots API.""" + """The RegionSnapshots API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -701,6 +708,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -844,6 +856,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1006,6 +1023,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1172,6 +1194,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1302,6 +1329,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1432,6 +1464,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1583,6 +1620,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1777,6 +1819,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1929,6 +1976,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2081,6 +2133,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2259,6 +2316,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2413,6 +2475,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2567,6 +2634,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py index 4fc275086ba1..245664f987dd 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_certificates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSslCertificatesClient(metaclass=RegionSslCertificatesClientMeta): - """The RegionSslCertificates API.""" + """The RegionSslCertificates API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1027,6 +1044,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1162,6 +1184,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1297,6 +1324,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1451,6 +1483,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py index 2c5510db4870..35aace422178 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_ssl_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionSslPoliciesClient(metaclass=RegionSslPoliciesClientMeta): - """The RegionSslPolicies API.""" + """The RegionSslPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1005,6 +1022,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1137,6 +1159,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1269,6 +1296,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1420,6 +1452,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1557,6 +1594,11 @@ def sample_list_available_features(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1702,6 +1744,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1847,6 +1894,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py index 4b8ddc4ff4a8..e889abe67d84 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_http_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionTargetHttpProxiesClient(metaclass=RegionTargetHttpProxiesClientMeta): - """The RegionTargetHttpProxies API.""" + """The RegionTargetHttpProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -700,6 +707,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1019,6 +1036,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1154,6 +1176,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1289,6 +1316,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1445,6 +1477,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1606,6 +1643,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1756,6 +1798,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py index 3149b1dcafeb..0c29b0770bd2 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_https_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionTargetHttpsProxiesClient(metaclass=RegionTargetHttpsProxiesClientMeta): - """The RegionTargetHttpsProxies API.""" + """The RegionTargetHttpsProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -700,6 +707,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -837,6 +849,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1019,6 +1036,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1154,6 +1176,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1289,6 +1316,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1445,6 +1477,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1607,6 +1644,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1758,6 +1800,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1940,6 +1987,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2097,6 +2149,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2272,6 +2329,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2422,6 +2484,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py index 8a482e3b992f..bb91f9e1faad 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_target_tcp_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionTargetTcpProxiesClient(metaclass=RegionTargetTcpProxiesClientMeta): - """The RegionTargetTcpProxies API.""" + """The RegionTargetTcpProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -698,6 +705,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1002,6 +1019,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1137,6 +1159,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1272,6 +1299,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1427,6 +1459,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py index 97c14fbdafcc..10c79bfc37f3 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_url_maps/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RegionUrlMapsClient(metaclass=RegionUrlMapsClientMeta): - """The RegionUrlMaps API.""" + """The RegionUrlMaps API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -691,6 +698,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -826,6 +838,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1021,6 +1038,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1153,6 +1175,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1285,6 +1312,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1438,6 +1470,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1593,6 +1630,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1737,6 +1779,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1906,6 +1953,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2050,6 +2102,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2227,6 +2284,11 @@ def sample_validate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py index 82b9373c99b7..6a967d130647 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/region_zones/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionZonesClient(metaclass=RegionZonesClientMeta): - """The RegionZones API.""" + """The RegionZones API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py index f90f4da07a7d..eaee2c732683 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/regions/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class RegionsClient(metaclass=RegionsClientMeta): - """The Regions API.""" + """The Regions API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -697,6 +704,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -826,6 +838,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py index 793e9119bd09..7e7a09d52c4d 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reliability_risks/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class ReliabilityRisksClient(metaclass=ReliabilityRisksClientMeta): - """The ReliabilityRisks API.""" + """The ReliabilityRisks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -791,6 +803,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py index 116f9c102c6a..eb3cf6b83ada 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_blocks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationBlocksClient(metaclass=ReservationBlocksClientMeta): - """The ReservationBlocks API.""" + """The ReservationBlocks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -709,6 +716,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -887,6 +899,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1028,6 +1045,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1209,6 +1231,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1379,6 +1406,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1600,6 +1632,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1766,6 +1803,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py index ca98d6dcb2a7..9af971000f38 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_slots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationSlotsClient(metaclass=ReservationSlotsClientMeta): - """The ReservationSlots API.""" + """The ReservationSlots API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -707,6 +714,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -856,6 +868,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1005,6 +1022,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1198,6 +1220,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1366,6 +1393,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1532,6 +1564,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1700,6 +1737,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1857,6 +1899,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py index 28bd32800f22..d66fb25d3a64 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservation_sub_blocks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationSubBlocksClient(metaclass=ReservationSubBlocksClientMeta): - """The ReservationSubBlocks API.""" + """The ReservationSubBlocks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -709,6 +716,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -887,6 +899,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1057,6 +1074,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1227,6 +1249,11 @@ def sample_get_version(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1393,6 +1420,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1558,6 +1590,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1712,6 +1749,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1906,6 +1948,11 @@ def sample_report_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2075,6 +2122,11 @@ def sample_report_faulty(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2296,6 +2348,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2464,6 +2521,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py index caf407ed5f30..776347d248ca 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/reservations/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ReservationsClient(metaclass=ReservationsClientMeta): - """The Reservations API.""" + """The Reservations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -672,6 +679,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -814,6 +826,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1106,6 +1128,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1270,6 +1297,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1400,6 +1432,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1530,6 +1567,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1679,6 +1721,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1845,6 +1892,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2000,6 +2052,11 @@ def sample_perform_maintenance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2175,6 +2232,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2325,6 +2387,11 @@ def sample_resize(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2524,6 +2591,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2672,6 +2744,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2811,6 +2888,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2950,6 +3032,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py index 9cab9116e9bd..9f0e7a4ce33f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/resource_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ResourcePoliciesClient(metaclass=ResourcePoliciesClientMeta): - """The ResourcePolicies API.""" + """The ResourcePolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1115,6 +1137,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1281,6 +1308,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1410,6 +1442,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1539,6 +1576,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1689,6 +1731,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1839,6 +1886,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1978,6 +2030,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2186,6 +2243,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2339,6 +2401,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py index e02c6af3d2dd..ad6298b83857 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollout_plans/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RolloutPlansClient(metaclass=RolloutPlansClientMeta): - """The RolloutPlans API.""" + """The RolloutPlans API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -679,6 +686,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -802,6 +814,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -956,6 +973,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1072,6 +1094,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1188,6 +1215,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1323,6 +1355,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py index f5d4111dabdd..91678da7f3c6 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/rollouts/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RolloutsClient(metaclass=RolloutsClientMeta): - """The Rollouts API.""" + """The Rollouts API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_advance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -808,6 +820,11 @@ def sample_advance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -955,6 +972,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1078,6 +1100,11 @@ def sample_cancel(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1225,6 +1252,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1348,6 +1380,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1499,6 +1536,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1607,6 +1649,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1742,6 +1789,11 @@ def sample_pause(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1866,6 +1918,11 @@ def sample_pause(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2015,6 +2072,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2140,6 +2202,11 @@ def sample_resume(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py index 439e68cbaeda..f79662af6cce 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routers/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RoutersClient(metaclass=RoutersClientMeta): - """The Routers API.""" + """The Routers API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -813,6 +825,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_delete_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1236,6 +1263,11 @@ def sample_delete_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1394,6 +1426,11 @@ def sample_delete_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1527,6 +1564,11 @@ def sample_delete_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1686,6 +1728,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1818,6 +1865,11 @@ def sample_get_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1950,6 +2002,11 @@ def sample_get_nat_ip_info(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2089,6 +2146,11 @@ def sample_get_nat_mapping_info(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2232,6 +2294,11 @@ def sample_get_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2362,6 +2429,11 @@ def sample_get_router_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2491,6 +2563,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2620,6 +2697,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2770,6 +2852,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2917,6 +3004,11 @@ def sample_list_bgp_routes(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3064,6 +3156,11 @@ def sample_list_named_sets(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3211,6 +3308,11 @@ def sample_list_route_policies(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3363,6 +3465,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3504,6 +3611,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3670,6 +3782,11 @@ def sample_patch_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3811,6 +3928,11 @@ def sample_patch_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3977,6 +4099,11 @@ def sample_patch_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4118,6 +4245,11 @@ def sample_patch_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4282,6 +4414,11 @@ def sample_preview(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4427,6 +4564,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4572,6 +4714,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4738,6 +4885,11 @@ def sample_update_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -4879,6 +5031,11 @@ def sample_update_named_set(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5045,6 +5202,11 @@ def sample_update_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -5186,6 +5348,11 @@ def sample_update_route_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py index 61580e828b75..6426fa42a7ea 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/routes/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class RoutesClient(metaclass=RoutesClientMeta): - """The Routes API.""" + """The Routes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -796,6 +808,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -946,6 +963,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1061,6 +1083,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1176,6 +1203,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1311,6 +1343,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1456,6 +1493,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py index 574d06f77bd8..db2444e6bb03 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/security_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SecurityPoliciesClient(metaclass=SecurityPoliciesClientMeta): - """The SecurityPolicies API.""" + """The SecurityPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -690,6 +697,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -821,6 +833,11 @@ def sample_add_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -962,6 +979,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1096,6 +1118,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1219,6 +1246,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1369,6 +1401,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1494,6 +1531,11 @@ def sample_get_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1610,6 +1652,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1726,6 +1773,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1860,6 +1912,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1985,6 +2042,11 @@ def sample_list_preconfigured_expression_sets(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2121,6 +2183,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2257,6 +2324,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2414,6 +2486,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2547,6 +2624,11 @@ def sample_patch_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2694,6 +2776,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2817,6 +2904,11 @@ def sample_remove_rule(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2978,6 +3070,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3115,6 +3212,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py index 0dea6251a573..188df6d5f16f 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/service_attachments/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ServiceAttachmentsClient(metaclass=ServiceAttachmentsClientMeta): - """The ServiceAttachments API.""" + """The ServiceAttachments API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -680,6 +687,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -825,6 +837,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1125,6 +1147,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1291,6 +1318,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1422,6 +1454,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1553,6 +1590,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1702,6 +1744,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1866,6 +1913,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2019,6 +2071,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2227,6 +2284,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2380,6 +2442,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py index e7bbb261d1f3..6f3bd44725f1 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshot_settings_service/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -111,7 +118,7 @@ def get_transport_class( class SnapshotSettingsServiceClient(metaclass=SnapshotSettingsServiceClientMeta): - """The SnapshotSettings API.""" + """The SnapshotSettings API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -667,6 +674,11 @@ def sample_get(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -782,6 +794,11 @@ def sample_patch(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -897,6 +914,11 @@ def sample_patch(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py index cab000d12b1c..d93c518a0c6d 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/snapshots/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SnapshotsClient(metaclass=SnapshotsClientMeta): - """The Snapshots API.""" + """The Snapshots API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -687,6 +694,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -968,6 +985,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1120,6 +1142,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1362,6 +1394,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1497,6 +1534,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1672,6 +1714,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1808,6 +1855,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1944,6 +1996,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2104,6 +2161,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2241,6 +2303,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2378,6 +2445,11 @@ def sample_update_kms_key(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py index c99c44721314..57304cd80f83 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_certificates/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SslCertificatesClient(metaclass=SslCertificatesClientMeta): - """The SslCertificates API.""" + """The SslCertificates API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -809,6 +821,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -932,6 +949,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1107,6 +1129,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1223,6 +1250,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1339,6 +1371,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1475,6 +1512,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py index 337cf2083dd4..da651f7836f2 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/ssl_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SslPoliciesClient(metaclass=SslPoliciesClientMeta): - """The SslPolicies API.""" + """The SslPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -671,6 +678,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -808,6 +820,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -934,6 +951,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1089,6 +1111,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1204,6 +1231,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1319,6 +1351,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1453,6 +1490,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1572,6 +1614,11 @@ def sample_list_available_features(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1705,6 +1752,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1838,6 +1890,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py index fe4b2480aa7f..72380470b654 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pool_types/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class StoragePoolTypesClient(metaclass=StoragePoolTypesClientMeta): - """The StoragePoolTypes API.""" + """The StoragePoolTypes API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -814,6 +826,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -942,6 +959,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py index a7a0cd314070..b01331e62c36 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/storage_pools/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class StoragePoolsClient(metaclass=StoragePoolsClientMeta): - """The StoragePools API.""" + """The StoragePools API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -670,6 +677,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -955,6 +972,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1114,6 +1136,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1278,6 +1305,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1410,6 +1442,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1542,6 +1579,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1695,6 +1737,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1843,6 +1890,11 @@ def sample_list_disks(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2028,6 +2080,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2176,6 +2233,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2323,6 +2385,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2470,6 +2537,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py index d69c4c531a86..27d297bee88e 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/subnetworks/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class SubnetworksClient(metaclass=SubnetworksClientMeta): - """The Subnetworks API.""" + """The Subnetworks API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -814,6 +826,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -949,6 +966,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1129,6 +1151,11 @@ def sample_expand_ip_cidr_range(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1284,6 +1311,11 @@ def sample_expand_ip_cidr_range(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1450,6 +1482,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1614,6 +1651,11 @@ def sample_get_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1746,6 +1788,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1878,6 +1925,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2031,6 +2083,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2152,6 +2209,11 @@ def sample_list_usable(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2311,6 +2373,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2459,6 +2526,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2665,6 +2737,11 @@ def sample_set_iam_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2821,6 +2898,11 @@ def sample_set_private_ip_google_access(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2977,6 +3059,11 @@ def sample_set_private_ip_google_access(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3155,6 +3242,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py index 3c9a78478bf6..1fc244dac1c7 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_grpc_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetGrpcProxiesClient(metaclass=TargetGrpcProxiesClientMeta): - """The TargetGrpcProxies API.""" + """The TargetGrpcProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -685,6 +692,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -809,6 +821,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -964,6 +981,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1081,6 +1103,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1198,6 +1225,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1332,6 +1364,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1477,6 +1514,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1611,6 +1653,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py index f54752bd416a..3b3f4f827de9 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_http_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetHttpProxiesClient(metaclass=TargetHttpProxiesClientMeta): - """The TargetHttpProxies API.""" + """The TargetHttpProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -935,6 +952,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1219,6 +1246,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1335,6 +1367,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1471,6 +1508,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1616,6 +1658,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1797,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1905,6 +1957,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2036,6 +2093,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py index 1fcaec9f4f1e..6002c174a91c 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_https_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetHttpsProxiesClient(metaclass=TargetHttpsProxiesClientMeta): - """The TargetHttpsProxies API.""" + """The TargetHttpsProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -935,6 +952,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1103,6 +1125,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1219,6 +1246,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1335,6 +1367,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1471,6 +1508,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1616,6 +1658,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1797,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1917,6 +1969,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2060,6 +2117,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2226,6 +2288,11 @@ def sample_set_quic_override(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2368,6 +2435,11 @@ def sample_set_quic_override(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2533,6 +2605,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2674,6 +2751,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2837,6 +2919,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2976,6 +3063,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3131,6 +3223,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3262,6 +3359,11 @@ def sample_set_url_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py index d27f3864a700..6caeecd2e7c5 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_instances/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetInstancesClient(metaclass=TargetInstancesClientMeta): - """The TargetInstances API.""" + """The TargetInstances API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -672,6 +679,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -818,6 +830,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -953,6 +970,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1121,6 +1143,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1253,6 +1280,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1385,6 +1417,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1538,6 +1575,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1706,6 +1748,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1863,6 +1910,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2036,6 +2088,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py index 08937292fff9..4c828defed98 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_pools/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetPoolsClient(metaclass=TargetPoolsClientMeta): - """The TargetPools API.""" + """The TargetPools API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -708,6 +715,11 @@ def sample_add_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -860,6 +872,11 @@ def sample_add_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1037,6 +1054,11 @@ def sample_add_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1189,6 +1211,11 @@ def sample_add_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1326,6 +1353,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1472,6 +1504,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1607,6 +1644,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1774,6 +1816,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1917,6 +1964,11 @@ def sample_get_health(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2049,6 +2101,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2181,6 +2238,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2334,6 +2396,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2497,6 +2564,11 @@ def sample_remove_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2649,6 +2721,11 @@ def sample_remove_health_check(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2826,6 +2903,11 @@ def sample_remove_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2978,6 +3060,11 @@ def sample_remove_instance(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3146,6 +3233,11 @@ def sample_set_backup(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3289,6 +3381,11 @@ def sample_set_backup(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3471,6 +3568,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3628,6 +3730,11 @@ def sample_set_security_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3806,6 +3913,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py index 20f7836c325c..075fc32eea85 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_ssl_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetSslProxiesClient(metaclass=TargetSslProxiesClientMeta): - """The TargetSslProxies API.""" + """The TargetSslProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -682,6 +689,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -805,6 +817,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -959,6 +976,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1075,6 +1097,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1191,6 +1218,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1327,6 +1359,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1480,6 +1517,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1622,6 +1664,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1789,6 +1836,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1932,6 +1984,11 @@ def sample_set_certificate_map(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2097,6 +2154,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2238,6 +2300,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2404,6 +2471,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2546,6 +2618,11 @@ def sample_set_ssl_certificates(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2709,6 +2786,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2848,6 +2930,11 @@ def sample_set_ssl_policy(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -3008,6 +3095,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py index 144dad6a3051..f0394622b264 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_tcp_proxies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetTcpProxiesClient(metaclass=TargetTcpProxiesClientMeta): - """The TargetTcpProxies API.""" + """The TargetTcpProxies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -676,6 +683,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -933,6 +950,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1087,6 +1109,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1203,6 +1230,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1319,6 +1351,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1455,6 +1492,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1608,6 +1650,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1750,6 +1797,11 @@ def sample_set_backend_service(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1915,6 +1967,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2056,6 +2113,11 @@ def sample_set_proxy_header(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2216,6 +2278,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py index c6668d0a6bcc..d5680996a1cd 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/target_vpn_gateways/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class TargetVpnGatewaysClient(metaclass=TargetVpnGatewaysClientMeta): - """The TargetVpnGateways API.""" + """The TargetVpnGateways API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -675,6 +682,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -819,6 +831,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -952,6 +969,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1114,6 +1136,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1244,6 +1271,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1374,6 +1406,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1525,6 +1562,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1687,6 +1729,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1838,6 +1885,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py index 07c1252ece3f..1d3bb74eee79 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/url_maps/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class UrlMapsClient(metaclass=UrlMapsClientMeta): - """The UrlMaps API.""" + """The UrlMaps API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -671,6 +678,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -804,6 +816,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -926,6 +943,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1107,6 +1129,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1222,6 +1249,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1337,6 +1369,11 @@ def sample_insert(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1500,6 +1537,11 @@ def sample_invalidate_cache(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1639,6 +1681,11 @@ def sample_invalidate_cache(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1774,6 +1821,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1916,6 +1968,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2047,6 +2104,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2205,6 +2267,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2336,6 +2403,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2467,6 +2539,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2626,6 +2703,11 @@ def sample_validate(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py index 3d39da212247..36edb331b993 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_gateways/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class VpnGatewaysClient(metaclass=VpnGatewaysClientMeta): - """The VpnGateways API.""" + """The VpnGateways API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -810,6 +822,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -941,6 +958,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1105,6 +1127,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1234,6 +1261,11 @@ def sample_get_status(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1364,6 +1396,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1494,6 +1531,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1645,6 +1687,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1807,6 +1854,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1958,6 +2010,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -2136,6 +2193,11 @@ def sample_test_iam_permissions(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py index ceb716bcfb85..a1f42f202d8d 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/vpn_tunnels/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class VpnTunnelsClient(metaclass=VpnTunnelsClientMeta): - """The VpnTunnels API.""" + """The VpnTunnels API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -668,6 +675,11 @@ def sample_aggregated_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -812,6 +824,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -945,6 +962,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1104,6 +1126,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1234,6 +1261,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1364,6 +1396,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1515,6 +1552,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1677,6 +1719,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1828,6 +1875,11 @@ def sample_set_labels(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py index c86b495f6d0b..00563444bcd7 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/wire_groups/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class WireGroupsClient(metaclass=WireGroupsClientMeta): - """The WireGroups API.""" + """The WireGroups API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -689,6 +696,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -822,6 +834,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -979,6 +996,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1110,6 +1132,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1241,6 +1268,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1391,6 +1423,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1551,6 +1588,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1700,6 +1742,11 @@ def sample_patch(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py index cc2c021bd344..de187ff89fec 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_operations/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class ZoneOperationsClient(metaclass=ZoneOperationsClientMeta): - """The ZoneOperations API.""" + """The ZoneOperations API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -689,6 +696,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -846,6 +858,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -972,6 +989,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1155,6 +1177,11 @@ def sample_wait(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py index 2ab732a6b70c..ce9b7bdfed75 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zone_vm_extension_policies/client.py @@ -55,6 +55,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -112,7 +119,7 @@ def get_transport_class( class ZoneVmExtensionPoliciesClient(metaclass=ZoneVmExtensionPoliciesClientMeta): - """The ZoneVmExtensionPolicies API.""" + """The ZoneVmExtensionPolicies API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -699,6 +706,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -835,6 +847,11 @@ def sample_delete(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -992,6 +1009,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1124,6 +1146,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1256,6 +1283,11 @@ def sample_insert(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1407,6 +1439,11 @@ def sample_list(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1567,6 +1604,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -1716,6 +1758,11 @@ def sample_update(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py index 104311f5a603..ad8cc7f9d697 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/services/zones/client.py @@ -54,6 +54,13 @@ should_use_client_cert, ) +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + try: OptionalRetry = Union[retries.Retry, gapic_v1.method._MethodDefault, None] except AttributeError: # pragma: NO COVER @@ -109,7 +116,7 @@ def get_transport_class( class ZonesClient(metaclass=ZonesClientMeta): - """The Zones API.""" + """The Zones API. This class implements API version 2026-10-01-preview.""" # Note: DEFAULT_ENDPOINT is deprecated. Use _DEFAULT_ENDPOINT_TEMPLATE instead. DEFAULT_ENDPOINT = "compute.googleapis.com" @@ -678,6 +685,11 @@ def sample_get(): ), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() @@ -789,6 +801,11 @@ def sample_list(): gapic_v1.routing_header.to_grpc_metadata((("project", request.project),)), ) + if HAS_GOOGLE_API_CORE_VERSION_HEADER: # pragma: NO COVER + metadata = tuple(metadata) + ( + version_header.to_api_version_header("2026-10-01-preview"), + ) + # Validate the universe domain. self._validate_universe_domain() diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py index 7e744dbe7af6..8dec13e07ba5 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/__init__.py @@ -17,6 +17,14 @@ AbandonInstancesInstanceGroupManagerRequest, AbandonInstancesRegionInstanceGroupManagerRequest, AcceleratorConfig, + AcceleratorInterconnect, + AcceleratorInterconnectAcceleratorInterconnectStatus, + AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails, + AcceleratorInterconnectMemberInstance, + AcceleratorInterconnectMemberInstancesListResponse, + AcceleratorInterconnectParams, + AcceleratorInterconnectsInsertRequest, + AcceleratorInterconnectsList, Accelerators, AcceleratorTopologiesInfo, AcceleratorTopologiesInfoAcceleratorTopologyInfo, @@ -66,6 +74,7 @@ AggregatedListFutureReservationsRequest, AggregatedListGlobalOperationsRequest, AggregatedListGlobalVmExtensionPoliciesRequest, + AggregatedListHaControllersRequest, AggregatedListHealthChecksRequest, AggregatedListInstanceGroupManagersRequest, AggregatedListInstanceGroupsRequest, @@ -237,11 +246,13 @@ CapacityHistoryAdviceRequest, CapacityHistoryRequest, CapacityHistoryRequestInstanceProperties, + CapacityHistoryRequestInstancePropertiesAttachedDisk, CapacityHistoryRequestInstancePropertiesScheduling, CapacityHistoryRequestLocationPolicy, CapacityHistoryResponse, CapacityHistoryResponsePreemptionRecord, CapacityHistoryResponsePriceRecord, + CapacityPool, CircuitBreakers, CloneRulesFirewallPolicyRequest, CloneRulesNetworkFirewallPolicyRequest, @@ -278,6 +289,7 @@ Data, Date, DateTime, + DeleteAcceleratorInterconnectRequest, DeleteAccessConfigInstanceRequest, DeleteAddressRequest, DeleteAutoscalerRequest, @@ -299,6 +311,7 @@ DeleteGlobalOrganizationOperationResponse, DeleteGlobalPublicDelegatedPrefixeRequest, DeleteGlobalVmExtensionPolicyRequest, + DeleteHaControllerRequest, DeleteHealthCheckRequest, DeleteImageRequest, DeleteInstanceGroupManagerRequest, @@ -438,6 +451,7 @@ ExternalVpnGatewayInterface, ExternalVpnGatewayList, ExternalVpnGatewayParams, + FailoverHaControllerRequest, FileContentBuffer, Firewall, FirewallList, @@ -485,6 +499,7 @@ FutureResourcesSpecLocationPolicyLocation, FutureResourcesSpecSpecificSKUResources, FutureResourcesSpecTargetResources, + GetAcceleratorInterconnectRequest, GetAcceleratorTypeRequest, GetAddressRequest, GetAssociationFirewallPolicyRequest, @@ -511,12 +526,14 @@ GetFutureReservationRequest, GetGlobalAddressRequest, GetGlobalForwardingRuleRequest, + GetGlobalFrontendSettingRequest, GetGlobalNetworkEndpointGroupRequest, GetGlobalOperationRequest, GetGlobalOrganizationOperationRequest, GetGlobalPublicDelegatedPrefixeRequest, GetGlobalVmExtensionPolicyRequest, GetGuestAttributesInstanceRequest, + GetHaControllerRequest, GetHealthBackendServiceRequest, GetHealthCheckRequest, GetHealthOperationMetadata, @@ -562,6 +579,7 @@ GetIamPolicySubnetworkRequest, GetImageFamilyViewRequest, GetImageRequest, + GetImageViewRequest, GetInstanceGroupManagerRequest, GetInstanceGroupManagerResizeRequestRequest, GetInstanceGroupRequest, @@ -581,6 +599,7 @@ GetMachineImageRequest, GetMachineTypeRequest, GetMacsecConfigInterconnectRequest, + GetManagedRulesetRequest, GetNamedSetRouterRequest, GetNatIpInfoRouterRequest, GetNatMappingInfoRoutersRequest, @@ -688,6 +707,8 @@ GetZoneRequest, GetZoneVmExtensionPolicyRequest, GlobalAddressesMoveRequest, + GlobalFrontendSettings, + GlobalFrontendSettingsPatchResponse, GlobalNetworkEndpointGroupsAttachEndpointsRequest, GlobalNetworkEndpointGroupsDetachEndpointsRequest, GlobalOrganizationSetPolicyRequest, @@ -710,6 +731,23 @@ GuestAttributesEntry, GuestAttributesValue, GuestOsFeature, + HaController, + HaControllerNetworkingAutoConfiguration, + HaControllerNetworkingAutoConfigurationInternal, + HaControllersAggregatedList, + HaControllersFailoverRequest, + HaControllersList, + HaControllersScopedList, + HaControllerStatus, + HaControllerStatusFailoverProgress, + HaControllerStatusFailoverProgressLastFailoverAttempt, + HaControllerStatusFailoverProgressLastFailoverAttemptErrors, + HaControllerStatusZoneStatus, + HaControllerStatusZoneStatusLastError, + HaControllerStatusZoneStatusLastErrorErrors, + HaControllerZoneConfiguration, + HaControllerZoneConfigurationNodeAffinity, + HaControllerZoneConfigurationReservationAffinity, HealthAggregationPoliciesScopedList, HealthAggregationPolicy, HealthAggregationPolicyAggregatedList, @@ -761,7 +799,10 @@ ImageFamilyView, ImageList, ImageParams, + ImageView, + ImageViewsListResponse, InitialStateConfig, + InsertAcceleratorInterconnectRequest, InsertAddressRequest, InsertAutoscalerRequest, InsertBackendBucketRequest, @@ -778,6 +819,7 @@ InsertGlobalNetworkEndpointGroupRequest, InsertGlobalPublicDelegatedPrefixeRequest, InsertGlobalVmExtensionPolicyRequest, + InsertHaControllerRequest, InsertHealthCheckRequest, InsertImageRequest, InsertInstanceGroupManagerRequest, @@ -945,6 +987,7 @@ InstancesSetSecurityPolicyRequest, InstancesSetServiceAccountRequest, InstancesStartWithEncryptionKeyRequest, + InstancesTroubleshootOperationMetadata, InstanceTemplate, InstanceTemplateAggregatedList, InstanceTemplateList, @@ -1036,6 +1079,7 @@ InterconnectRemoteLocationPermittedConnections, InterconnectsGetDiagnosticsResponse, InterconnectsGetMacsecConfigResponse, + InterconnectsSetNameRequest, Interval, InvalidateCacheUrlMapRequest, Items, @@ -1046,6 +1090,8 @@ LicenseResourceCommitment, LicenseResourceRequirements, LicensesListResponse, + ListAcceleratorInterconnectMemberInstancesRequest, + ListAcceleratorInterconnectsRequest, ListAcceleratorTypesRequest, ListAddressesRequest, ListAssociationsFirewallPolicyRequest, @@ -1074,9 +1120,11 @@ ListGlobalOrganizationOperationsRequest, ListGlobalPublicDelegatedPrefixesRequest, ListGlobalVmExtensionPoliciesRequest, + ListHaControllersRequest, ListHealthChecksRequest, ListHostsRequest, ListImagesRequest, + ListImageViewsRequest, ListInstanceGroupManagerResizeRequestsRequest, ListInstanceGroupManagersRequest, ListInstanceGroupsRequest, @@ -1098,6 +1146,7 @@ ListMachineTypesRequest, ListManagedInstancesInstanceGroupManagersRequest, ListManagedInstancesRegionInstanceGroupManagersRequest, + ListManagedRulesetsRequest, ListNamedSetsRoutersRequest, ListNetworkAttachmentsRequest, ListNetworkEndpointGroupsRequest, @@ -1214,6 +1263,8 @@ ManagedInstanceScheduling, ManagedInstanceShutdownDetails, ManagedInstanceVersion, + ManagedRuleset, + ManagedRulesetList, Metadata, MetadataFilter, MetadataFilterLabelMatch, @@ -1237,6 +1288,7 @@ NetworkAttachmentsScopedList, NetworkEdgeSecurityService, NetworkEdgeSecurityServiceAggregatedList, + NetworkEdgeSecurityServiceParams, NetworkEdgeSecurityServicesScopedList, NetworkEndpoint, NetworkEndpointGroup, @@ -1319,6 +1371,9 @@ PacketMirroringMirroredResourceInfoSubnetInfo, PacketMirroringNetworkInfo, PacketMirroringsScopedList, + PartitionFormability, + PartitionFormabilityStatus, + PatchAssociationRegionNetworkFirewallPolicyRequest, PatchAutoscalerRequest, PatchBackendBucketRequest, PatchBackendServiceRequest, @@ -1327,7 +1382,9 @@ PatchFirewallRequest, PatchForwardingRuleRequest, PatchGlobalForwardingRuleRequest, + PatchGlobalFrontendSettingRequest, PatchGlobalPublicDelegatedPrefixeRequest, + PatchHaControllerRequest, PatchHealthCheckRequest, PatchImageRequest, PatchInstanceGroupManagerRequest, @@ -1422,7 +1479,9 @@ PublicDelegatedPrefixesScopedList, PublicDelegatedPrefixList, PublicDelegatedPrefixPublicDelegatedSubPrefix, - Quota, + QueryFormabilityAcceleratorInterconnectsRequest, + QueryFormabilityRequest, + QueryFormabilityResponse, QuotaExceededInfo, QuotaStatusWarning, RawDisk, @@ -1501,6 +1560,8 @@ ReservationAffinity, ReservationAggregatedList, ReservationBlock, + ReservationBlockBlockDetailedHealthInfo, + ReservationBlockBlockStatus, ReservationBlockHealthInfo, ReservationBlockPhysicalTopology, ReservationBlockPhysicalTopologyInstance, @@ -1527,6 +1588,8 @@ ReservationSubBlocksListResponse, ReservationSubBlocksReportFaultyRequest, ReservationSubBlocksReportFaultyRequestFaultReason, + ReservationSubBlockSubBlockDetailedHealthInfo, + ReservationSubBlockSubBlockStatus, ResetInstanceRequest, ResizeDiskRequest, ResizeInstanceGroupManagerRequest, @@ -1643,6 +1706,7 @@ SecurityPolicyAssociation, SecurityPolicyDdosProtectionConfig, SecurityPolicyList, + SecurityPolicyParams, SecurityPolicyRecaptchaOptionsConfig, SecurityPolicyReference, SecurityPolicyRule, @@ -1751,6 +1815,7 @@ SetNamedPortsInstanceGroupRequest, SetNamedPortsRegionInstanceGroupRequest, SetNameInstanceRequest, + SetNameInterconnectRequest, SetNodeTemplateNodeGroupRequest, SetPrivateIpGoogleAccessSubnetworkRequest, SetProxyHeaderTargetSslProxyRequest, @@ -2091,6 +2156,14 @@ "AbandonInstancesInstanceGroupManagerRequest", "AbandonInstancesRegionInstanceGroupManagerRequest", "AcceleratorConfig", + "AcceleratorInterconnect", + "AcceleratorInterconnectAcceleratorInterconnectStatus", + "AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails", + "AcceleratorInterconnectMemberInstance", + "AcceleratorInterconnectMemberInstancesListResponse", + "AcceleratorInterconnectParams", + "AcceleratorInterconnectsInsertRequest", + "AcceleratorInterconnectsList", "Accelerators", "AcceleratorTopologiesInfo", "AcceleratorTopologiesInfoAcceleratorTopologyInfo", @@ -2140,6 +2213,7 @@ "AggregatedListFutureReservationsRequest", "AggregatedListGlobalOperationsRequest", "AggregatedListGlobalVmExtensionPoliciesRequest", + "AggregatedListHaControllersRequest", "AggregatedListHealthChecksRequest", "AggregatedListInstanceGroupManagersRequest", "AggregatedListInstanceGroupsRequest", @@ -2311,11 +2385,13 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", "CapacityHistoryResponsePreemptionRecord", "CapacityHistoryResponsePriceRecord", + "CapacityPool", "CircuitBreakers", "CloneRulesFirewallPolicyRequest", "CloneRulesNetworkFirewallPolicyRequest", @@ -2352,6 +2428,7 @@ "Data", "Date", "DateTime", + "DeleteAcceleratorInterconnectRequest", "DeleteAccessConfigInstanceRequest", "DeleteAddressRequest", "DeleteAutoscalerRequest", @@ -2373,6 +2450,7 @@ "DeleteGlobalOrganizationOperationResponse", "DeleteGlobalPublicDelegatedPrefixeRequest", "DeleteGlobalVmExtensionPolicyRequest", + "DeleteHaControllerRequest", "DeleteHealthCheckRequest", "DeleteImageRequest", "DeleteInstanceGroupManagerRequest", @@ -2512,6 +2590,7 @@ "ExternalVpnGatewayInterface", "ExternalVpnGatewayList", "ExternalVpnGatewayParams", + "FailoverHaControllerRequest", "FileContentBuffer", "Firewall", "FirewallList", @@ -2559,6 +2638,7 @@ "FutureResourcesSpecLocationPolicyLocation", "FutureResourcesSpecSpecificSKUResources", "FutureResourcesSpecTargetResources", + "GetAcceleratorInterconnectRequest", "GetAcceleratorTypeRequest", "GetAddressRequest", "GetAssociationFirewallPolicyRequest", @@ -2585,12 +2665,14 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", "GetGlobalPublicDelegatedPrefixeRequest", "GetGlobalVmExtensionPolicyRequest", "GetGuestAttributesInstanceRequest", + "GetHaControllerRequest", "GetHealthBackendServiceRequest", "GetHealthCheckRequest", "GetHealthOperationMetadata", @@ -2636,6 +2718,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -2655,6 +2738,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -2762,6 +2846,8 @@ "GetZoneRequest", "GetZoneVmExtensionPolicyRequest", "GlobalAddressesMoveRequest", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", "GlobalOrganizationSetPolicyRequest", @@ -2784,6 +2870,23 @@ "GuestAttributesEntry", "GuestAttributesValue", "GuestOsFeature", + "HaController", + "HaControllerNetworkingAutoConfiguration", + "HaControllerNetworkingAutoConfigurationInternal", + "HaControllersAggregatedList", + "HaControllersFailoverRequest", + "HaControllersList", + "HaControllersScopedList", + "HaControllerStatus", + "HaControllerStatusFailoverProgress", + "HaControllerStatusFailoverProgressLastFailoverAttempt", + "HaControllerStatusFailoverProgressLastFailoverAttemptErrors", + "HaControllerStatusZoneStatus", + "HaControllerStatusZoneStatusLastError", + "HaControllerStatusZoneStatusLastErrorErrors", + "HaControllerZoneConfiguration", + "HaControllerZoneConfigurationNodeAffinity", + "HaControllerZoneConfigurationReservationAffinity", "HealthAggregationPoliciesScopedList", "HealthAggregationPolicy", "HealthAggregationPolicyAggregatedList", @@ -2835,7 +2938,10 @@ "ImageFamilyView", "ImageList", "ImageParams", + "ImageView", + "ImageViewsListResponse", "InitialStateConfig", + "InsertAcceleratorInterconnectRequest", "InsertAddressRequest", "InsertAutoscalerRequest", "InsertBackendBucketRequest", @@ -2852,6 +2958,7 @@ "InsertGlobalNetworkEndpointGroupRequest", "InsertGlobalPublicDelegatedPrefixeRequest", "InsertGlobalVmExtensionPolicyRequest", + "InsertHaControllerRequest", "InsertHealthCheckRequest", "InsertImageRequest", "InsertInstanceGroupManagerRequest", @@ -3019,6 +3126,7 @@ "InstancesSetSecurityPolicyRequest", "InstancesSetServiceAccountRequest", "InstancesStartWithEncryptionKeyRequest", + "InstancesTroubleshootOperationMetadata", "InstanceTemplate", "InstanceTemplateAggregatedList", "InstanceTemplateList", @@ -3110,6 +3218,7 @@ "InterconnectRemoteLocationPermittedConnections", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -3120,6 +3229,8 @@ "LicenseResourceCommitment", "LicenseResourceRequirements", "LicensesListResponse", + "ListAcceleratorInterconnectMemberInstancesRequest", + "ListAcceleratorInterconnectsRequest", "ListAcceleratorTypesRequest", "ListAddressesRequest", "ListAssociationsFirewallPolicyRequest", @@ -3148,9 +3259,11 @@ "ListGlobalOrganizationOperationsRequest", "ListGlobalPublicDelegatedPrefixesRequest", "ListGlobalVmExtensionPoliciesRequest", + "ListHaControllersRequest", "ListHealthChecksRequest", "ListHostsRequest", "ListImagesRequest", + "ListImageViewsRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", "ListInstanceGroupsRequest", @@ -3172,6 +3285,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -3288,6 +3402,8 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -3311,6 +3427,7 @@ "NetworkAttachmentsScopedList", "NetworkEdgeSecurityService", "NetworkEdgeSecurityServiceAggregatedList", + "NetworkEdgeSecurityServiceParams", "NetworkEdgeSecurityServicesScopedList", "NetworkEndpoint", "NetworkEndpointGroup", @@ -3393,6 +3510,9 @@ "PacketMirroringMirroredResourceInfoSubnetInfo", "PacketMirroringNetworkInfo", "PacketMirroringsScopedList", + "PartitionFormability", + "PartitionFormabilityStatus", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -3401,7 +3521,9 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", + "PatchHaControllerRequest", "PatchHealthCheckRequest", "PatchImageRequest", "PatchInstanceGroupManagerRequest", @@ -3496,7 +3618,9 @@ "PublicDelegatedPrefixesScopedList", "PublicDelegatedPrefixList", "PublicDelegatedPrefixPublicDelegatedSubPrefix", - "Quota", + "QueryFormabilityAcceleratorInterconnectsRequest", + "QueryFormabilityRequest", + "QueryFormabilityResponse", "QuotaExceededInfo", "QuotaStatusWarning", "RawDisk", @@ -3575,6 +3699,8 @@ "ReservationAffinity", "ReservationAggregatedList", "ReservationBlock", + "ReservationBlockBlockDetailedHealthInfo", + "ReservationBlockBlockStatus", "ReservationBlockHealthInfo", "ReservationBlockPhysicalTopology", "ReservationBlockPhysicalTopologyInstance", @@ -3601,6 +3727,8 @@ "ReservationSubBlocksListResponse", "ReservationSubBlocksReportFaultyRequest", "ReservationSubBlocksReportFaultyRequestFaultReason", + "ReservationSubBlockSubBlockDetailedHealthInfo", + "ReservationSubBlockSubBlockStatus", "ResetInstanceRequest", "ResizeDiskRequest", "ResizeInstanceGroupManagerRequest", @@ -3717,6 +3845,7 @@ "SecurityPolicyAssociation", "SecurityPolicyDdosProtectionConfig", "SecurityPolicyList", + "SecurityPolicyParams", "SecurityPolicyRecaptchaOptionsConfig", "SecurityPolicyReference", "SecurityPolicyRule", @@ -3825,6 +3954,7 @@ "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNodeTemplateNodeGroupRequest", "SetPrivateIpGoogleAccessSubnetworkRequest", "SetProxyHeaderTargetSslProxyRequest", diff --git a/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py b/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py index c02a7943c5d9..8eb0055ad005 100644 --- a/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py +++ b/preview-packages/google-cloud-compute/google/cloud/compute_v1/types/compute.py @@ -27,6 +27,14 @@ "AbandonInstancesInstanceGroupManagerRequest", "AbandonInstancesRegionInstanceGroupManagerRequest", "AcceleratorConfig", + "AcceleratorInterconnect", + "AcceleratorInterconnectAcceleratorInterconnectStatus", + "AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails", + "AcceleratorInterconnectMemberInstance", + "AcceleratorInterconnectMemberInstancesListResponse", + "AcceleratorInterconnectParams", + "AcceleratorInterconnectsInsertRequest", + "AcceleratorInterconnectsList", "AcceleratorTopologiesInfo", "AcceleratorTopologiesInfoAcceleratorTopologyInfo", "AcceleratorTopologiesInfoAcceleratorTopologyInfoInfoPerTopologyState", @@ -76,6 +84,7 @@ "AggregatedListFutureReservationsRequest", "AggregatedListGlobalOperationsRequest", "AggregatedListGlobalVmExtensionPoliciesRequest", + "AggregatedListHaControllersRequest", "AggregatedListHealthChecksRequest", "AggregatedListInstanceGroupManagersRequest", "AggregatedListInstanceGroupsRequest", @@ -246,11 +255,13 @@ "CapacityHistoryAdviceRequest", "CapacityHistoryRequest", "CapacityHistoryRequestInstanceProperties", + "CapacityHistoryRequestInstancePropertiesAttachedDisk", "CapacityHistoryRequestInstancePropertiesScheduling", "CapacityHistoryRequestLocationPolicy", "CapacityHistoryResponse", "CapacityHistoryResponsePreemptionRecord", "CapacityHistoryResponsePriceRecord", + "CapacityPool", "CircuitBreakers", "CloneRulesFirewallPolicyRequest", "CloneRulesNetworkFirewallPolicyRequest", @@ -287,6 +298,7 @@ "Data", "Date", "DateTime", + "DeleteAcceleratorInterconnectRequest", "DeleteAccessConfigInstanceRequest", "DeleteAddressRequest", "DeleteAutoscalerRequest", @@ -308,6 +320,7 @@ "DeleteGlobalOrganizationOperationResponse", "DeleteGlobalPublicDelegatedPrefixeRequest", "DeleteGlobalVmExtensionPolicyRequest", + "DeleteHaControllerRequest", "DeleteHealthCheckRequest", "DeleteImageRequest", "DeleteInstanceGroupManagerRequest", @@ -447,6 +460,7 @@ "ExternalVpnGatewayInterface", "ExternalVpnGatewayList", "ExternalVpnGatewayParams", + "FailoverHaControllerRequest", "FileContentBuffer", "Firewall", "FirewallList", @@ -496,6 +510,7 @@ "FutureResourcesSpecTargetResources", "GRPCHealthCheck", "GRPCTLSHealthCheck", + "GetAcceleratorInterconnectRequest", "GetAcceleratorTypeRequest", "GetAddressRequest", "GetAssociationFirewallPolicyRequest", @@ -522,12 +537,14 @@ "GetFutureReservationRequest", "GetGlobalAddressRequest", "GetGlobalForwardingRuleRequest", + "GetGlobalFrontendSettingRequest", "GetGlobalNetworkEndpointGroupRequest", "GetGlobalOperationRequest", "GetGlobalOrganizationOperationRequest", "GetGlobalPublicDelegatedPrefixeRequest", "GetGlobalVmExtensionPolicyRequest", "GetGuestAttributesInstanceRequest", + "GetHaControllerRequest", "GetHealthBackendServiceRequest", "GetHealthCheckRequest", "GetHealthOperationMetadata", @@ -573,6 +590,7 @@ "GetIamPolicySubnetworkRequest", "GetImageFamilyViewRequest", "GetImageRequest", + "GetImageViewRequest", "GetInstanceGroupManagerRequest", "GetInstanceGroupManagerResizeRequestRequest", "GetInstanceGroupRequest", @@ -592,6 +610,7 @@ "GetMachineImageRequest", "GetMachineTypeRequest", "GetMacsecConfigInterconnectRequest", + "GetManagedRulesetRequest", "GetNamedSetRouterRequest", "GetNatIpInfoRouterRequest", "GetNatMappingInfoRoutersRequest", @@ -699,6 +718,8 @@ "GetZoneRequest", "GetZoneVmExtensionPolicyRequest", "GlobalAddressesMoveRequest", + "GlobalFrontendSettings", + "GlobalFrontendSettingsPatchResponse", "GlobalNetworkEndpointGroupsAttachEndpointsRequest", "GlobalNetworkEndpointGroupsDetachEndpointsRequest", "GlobalOrganizationSetPolicyRequest", @@ -722,6 +743,23 @@ "HTTP2HealthCheck", "HTTPHealthCheck", "HTTPSHealthCheck", + "HaController", + "HaControllerNetworkingAutoConfiguration", + "HaControllerNetworkingAutoConfigurationInternal", + "HaControllerStatus", + "HaControllerStatusFailoverProgress", + "HaControllerStatusFailoverProgressLastFailoverAttempt", + "HaControllerStatusFailoverProgressLastFailoverAttemptErrors", + "HaControllerStatusZoneStatus", + "HaControllerStatusZoneStatusLastError", + "HaControllerStatusZoneStatusLastErrorErrors", + "HaControllerZoneConfiguration", + "HaControllerZoneConfigurationNodeAffinity", + "HaControllerZoneConfigurationReservationAffinity", + "HaControllersAggregatedList", + "HaControllersFailoverRequest", + "HaControllersList", + "HaControllersScopedList", "HealthAggregationPoliciesScopedList", "HealthAggregationPolicy", "HealthAggregationPolicyAggregatedList", @@ -770,7 +808,10 @@ "ImageFamilyView", "ImageList", "ImageParams", + "ImageView", + "ImageViewsListResponse", "InitialStateConfig", + "InsertAcceleratorInterconnectRequest", "InsertAddressRequest", "InsertAutoscalerRequest", "InsertBackendBucketRequest", @@ -787,6 +828,7 @@ "InsertGlobalNetworkEndpointGroupRequest", "InsertGlobalPublicDelegatedPrefixeRequest", "InsertGlobalVmExtensionPolicyRequest", + "InsertHaControllerRequest", "InsertHealthCheckRequest", "InsertImageRequest", "InsertInstanceGroupManagerRequest", @@ -959,6 +1001,7 @@ "InstancesSetSecurityPolicyRequest", "InstancesSetServiceAccountRequest", "InstancesStartWithEncryptionKeyRequest", + "InstancesTroubleshootOperationMetadata", "InstantSnapshot", "InstantSnapshotAggregatedList", "InstantSnapshotGroup", @@ -1045,6 +1088,7 @@ "InterconnectRemoteLocationPermittedConnections", "InterconnectsGetDiagnosticsResponse", "InterconnectsGetMacsecConfigResponse", + "InterconnectsSetNameRequest", "Interval", "InvalidateCacheUrlMapRequest", "Items", @@ -1055,6 +1099,8 @@ "LicenseResourceCommitment", "LicenseResourceRequirements", "LicensesListResponse", + "ListAcceleratorInterconnectMemberInstancesRequest", + "ListAcceleratorInterconnectsRequest", "ListAcceleratorTypesRequest", "ListAddressesRequest", "ListAssociationsFirewallPolicyRequest", @@ -1083,8 +1129,10 @@ "ListGlobalOrganizationOperationsRequest", "ListGlobalPublicDelegatedPrefixesRequest", "ListGlobalVmExtensionPoliciesRequest", + "ListHaControllersRequest", "ListHealthChecksRequest", "ListHostsRequest", + "ListImageViewsRequest", "ListImagesRequest", "ListInstanceGroupManagerResizeRequestsRequest", "ListInstanceGroupManagersRequest", @@ -1107,6 +1155,7 @@ "ListMachineTypesRequest", "ListManagedInstancesInstanceGroupManagersRequest", "ListManagedInstancesRegionInstanceGroupManagersRequest", + "ListManagedRulesetsRequest", "ListNamedSetsRoutersRequest", "ListNetworkAttachmentsRequest", "ListNetworkEndpointGroupsRequest", @@ -1223,6 +1272,8 @@ "ManagedInstanceScheduling", "ManagedInstanceShutdownDetails", "ManagedInstanceVersion", + "ManagedRuleset", + "ManagedRulesetList", "Metadata", "MetadataFilter", "MetadataFilterLabelMatch", @@ -1246,6 +1297,7 @@ "NetworkAttachmentsScopedList", "NetworkEdgeSecurityService", "NetworkEdgeSecurityServiceAggregatedList", + "NetworkEdgeSecurityServiceParams", "NetworkEdgeSecurityServicesScopedList", "NetworkEndpoint", "NetworkEndpointGroup", @@ -1328,6 +1380,9 @@ "PacketMirroringMirroredResourceInfoSubnetInfo", "PacketMirroringNetworkInfo", "PacketMirroringsScopedList", + "PartitionFormability", + "PartitionFormabilityStatus", + "PatchAssociationRegionNetworkFirewallPolicyRequest", "PatchAutoscalerRequest", "PatchBackendBucketRequest", "PatchBackendServiceRequest", @@ -1336,7 +1391,9 @@ "PatchFirewallRequest", "PatchForwardingRuleRequest", "PatchGlobalForwardingRuleRequest", + "PatchGlobalFrontendSettingRequest", "PatchGlobalPublicDelegatedPrefixeRequest", + "PatchHaControllerRequest", "PatchHealthCheckRequest", "PatchImageRequest", "PatchInstanceGroupManagerRequest", @@ -1431,7 +1488,9 @@ "PublicDelegatedPrefixList", "PublicDelegatedPrefixPublicDelegatedSubPrefix", "PublicDelegatedPrefixesScopedList", - "Quota", + "QueryFormabilityAcceleratorInterconnectsRequest", + "QueryFormabilityRequest", + "QueryFormabilityResponse", "QuotaExceededInfo", "QuotaStatusWarning", "RawDisk", @@ -1510,6 +1569,8 @@ "ReservationAffinity", "ReservationAggregatedList", "ReservationBlock", + "ReservationBlockBlockDetailedHealthInfo", + "ReservationBlockBlockStatus", "ReservationBlockHealthInfo", "ReservationBlockPhysicalTopology", "ReservationBlockPhysicalTopologyInstance", @@ -1527,6 +1588,8 @@ "ReservationSubBlock", "ReservationSubBlockHealthInfo", "ReservationSubBlockPhysicalTopology", + "ReservationSubBlockSubBlockDetailedHealthInfo", + "ReservationSubBlockSubBlockStatus", "ReservationSubBlocksGetResponse", "ReservationSubBlocksGetVersionRequest", "ReservationSubBlocksListResponse", @@ -1653,6 +1716,7 @@ "SecurityPolicyAssociation", "SecurityPolicyDdosProtectionConfig", "SecurityPolicyList", + "SecurityPolicyParams", "SecurityPolicyRecaptchaOptionsConfig", "SecurityPolicyReference", "SecurityPolicyRule", @@ -1759,6 +1823,7 @@ "SetMetadataInstanceRequest", "SetMinCpuPlatformInstanceRequest", "SetNameInstanceRequest", + "SetNameInterconnectRequest", "SetNamedPortsInstanceGroupRequest", "SetNamedPortsRegionInstanceGroupRequest", "SetNodeTemplateNodeGroupRequest", @@ -2331,6 +2396,412 @@ class AcceleratorConfig(proto.Message): ) +class AcceleratorInterconnect(proto.Message): + r"""Represents an Accelerator Interconnect resource. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + accelerator_topology (str): + The target topology shape (e.g. "4x4x8"). + + This field is a member of `oneof`_ ``_accelerator_topology``. + annotations (MutableMapping[str, str]): + The annotations for the accelerator + interconnect. + creation_timestamp (str): + Output only. [Output Only] The creation time of this + resource inRFC3339 text format. + + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + An optional description of this resource. + + This field is a member of `oneof`_ ``_description``. + id (int): + Output only. [Output Only] A unique identifier for this + resource type. + + This field is a member of `oneof`_ ``_id``. + labels (MutableMapping[str, str]): + The labels for the accelerator interconnect. + name (str): + The name of the resource. The name must be + 1-63 characters long, and comply withRFC1035. + + This field is a member of `oneof`_ ``_name``. + params (google.cloud.compute_v1.types.AcceleratorInterconnectParams): + Input only. [Input Only] Additional params passed with the + creation request, but not persisted as part of resource + payload. + + This field is a member of `oneof`_ ``_params``. + reactivation_mode (str): + The reactivation mode for the accelerator + interconnect. Check the ReactivationMode enum + for the list of possible values. + + This field is a member of `oneof`_ ``_reactivation_mode``. + self_link (str): + Output only. [Output Only] The fully-qualified URL of this + resource. + + This field is a member of `oneof`_ ``_self_link``. + self_link_with_id (str): + Output only. [Output Only] The fully-qualified URL of this + resource containing its unique identifier. + + This field is a member of `oneof`_ ``_self_link_with_id``. + status (google.cloud.compute_v1.types.AcceleratorInterconnectAcceleratorInterconnectStatus): + Output only. [Output Only] The status of the interconnect. + + This field is a member of `oneof`_ ``_status``. + zone (str): + Output only. [Output Only] The URL of azone where the + interconnect resides. You must specify this field as part of + the HTTP request URL. It is not settable as a field in the + request body. + + This field is a member of `oneof`_ ``_zone``. + """ + + class ReactivationMode(proto.Enum): + r"""The reactivation mode for the accelerator interconnect. + + Values: + UNDEFINED_REACTIVATION_MODE (0): + A value indicating that the enum field is not + set. + MANUAL (119397318): + Manual reactivation mode. + REACTIVATION_MODE_UNSPECIFIED (248939633): + Unspecified value. + """ + + UNDEFINED_REACTIVATION_MODE = 0 + MANUAL = 119397318 + REACTIVATION_MODE_UNSPECIFIED = 248939633 + + accelerator_topology: str = proto.Field( + proto.STRING, + number=389323203, + optional=True, + ) + annotations: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=112032548, + ) + 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, + ) + labels: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=500195327, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + params: "AcceleratorInterconnectParams" = proto.Field( + proto.MESSAGE, + number=78313862, + optional=True, + message="AcceleratorInterconnectParams", + ) + reactivation_mode: str = proto.Field( + proto.STRING, + number=384308377, + 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, + ) + status: "AcceleratorInterconnectAcceleratorInterconnectStatus" = proto.Field( + proto.MESSAGE, + number=181260274, + optional=True, + message="AcceleratorInterconnectAcceleratorInterconnectStatus", + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + optional=True, + ) + + +class AcceleratorInterconnectAcceleratorInterconnectStatus(proto.Message): + r"""Detailed status information for the interconnect resource. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + accelerator_type (str): + Output only. [Output Only] The accelerator type (e.g., + "TPU7X"). + + This field is a member of `oneof`_ ``_accelerator_type``. + state (str): + Output only. [Output Only] The current state of the + interconnect. Check the State enum for the list of possible + values. + + This field is a member of `oneof`_ ``_state``. + state_details (google.cloud.compute_v1.types.AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails): + Output only. [Output Only] The result of the latest + accelerator topology state check. + + This field is a member of `oneof`_ ``_state_details``. + """ + + class State(proto.Enum): + r"""Output only. [Output Only] The current state of the interconnect. + + Values: + UNDEFINED_STATE (0): + A value indicating that the enum field is not + set. + ACTIVATING (378825968): + The interconnect is being activated. + ACTIVE (314733318): + The interconnect is active and fully + configured. + ACTIVE_DEGRADED (471128135): + The interconnect is active but operating in + degraded mode. + DEACTIVATING (57182257): + The interconnect is being deactivated. + FAILED (455706685): + The interconnect is failed and no longer + active. + STATE_UNSPECIFIED (470755401): + The interconnect is in an unspecified state. + """ + + UNDEFINED_STATE = 0 + ACTIVATING = 378825968 + ACTIVE = 314733318 + ACTIVE_DEGRADED = 471128135 + DEACTIVATING = 57182257 + FAILED = 455706685 + STATE_UNSPECIFIED = 470755401 + + accelerator_type: str = proto.Field( + proto.STRING, + number=138031246, + optional=True, + ) + state: str = proto.Field( + proto.STRING, + number=109757585, + optional=True, + ) + state_details: "AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails" = proto.Field( + proto.MESSAGE, + number=95566996, + optional=True, + message="AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails", + ) + + +class AcceleratorInterconnectAcceleratorInterconnectStatusAcceleratorInterconnectStateDetails( + proto.Message +): + r"""Holds the details of the current accelerator interconnect + state. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + error (google.cloud.compute_v1.types.Error): + Output only. Encountered errors. + + This field is a member of `oneof`_ ``_error``. + timestamp (str): + Output only. Timestamp is shown only if there + is an error. + + This field is a member of `oneof`_ ``_timestamp``. + """ + + error: "Error" = proto.Field( + proto.MESSAGE, + number=96784904, + optional=True, + message="Error", + ) + timestamp: str = proto.Field( + proto.STRING, + number=55126294, + optional=True, + ) + + +class AcceleratorInterconnectMemberInstance(proto.Message): + r"""Represents an Accelerator Interconnect Member Instance. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + instance (str): + Output only. [Output Only] The VM instance resource URL + (e.g., https://.../instances/my-vm). + + This field is a member of `oneof`_ ``_instance``. + instance_id (int): + Output only. [Output Only] The unique server-defined ID of + the VM instance. + + This field is a member of `oneof`_ ``_instance_id``. + """ + + instance: str = proto.Field( + proto.STRING, + number=18257045, + optional=True, + ) + instance_id: int = proto.Field( + proto.UINT64, + number=45488389, + optional=True, + ) + + +class AcceleratorInterconnectMemberInstancesListResponse(proto.Message): + r"""Response message for + AcceleratorInterconnectMemberInstances.List. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + items (MutableSequence[google.cloud.compute_v1.types.AcceleratorInterconnectMemberInstance]): + The list of + AcceleratorInterconnectMemberInstances. + next_page_token (str): + Token to retrieve the next page of results. + + This field is a member of `oneof`_ ``_next_page_token``. + """ + + @property + def raw_page(self): + return self + + items: MutableSequence["AcceleratorInterconnectMemberInstance"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="AcceleratorInterconnectMemberInstance", + ) + ) + next_page_token: str = proto.Field( + proto.STRING, + number=79797525, + optional=True, + ) + + +class AcceleratorInterconnectParams(proto.Message): + r"""Additional accelerator interconnect creation params. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + capacity_pool (google.cloud.compute_v1.types.CapacityPool): + The capacity pool to use for the accelerator + interconnect. + + This field is a member of `oneof`_ ``_capacity_pool``. + """ + + capacity_pool: "CapacityPool" = proto.Field( + proto.MESSAGE, + number=418128001, + optional=True, + message="CapacityPool", + ) + + +class AcceleratorInterconnectsInsertRequest(proto.Message): + r"""Insert an Accelerator Interconnect resource. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + resource (google.cloud.compute_v1.types.AcceleratorInterconnect): + Required. The accelerator interconnect + resource to insert. + + This field is a member of `oneof`_ ``_resource``. + """ + + resource: "AcceleratorInterconnect" = proto.Field( + proto.MESSAGE, + number=195806222, + optional=True, + message="AcceleratorInterconnect", + ) + + +class AcceleratorInterconnectsList(proto.Message): + r"""Response message for AcceleratorInterconnects.List. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + items (MutableSequence[google.cloud.compute_v1.types.AcceleratorInterconnect]): + A list of AcceleratorInterconnect resources. + next_page_token (str): + 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``. + """ + + @property + def raw_page(self): + return self + + items: MutableSequence["AcceleratorInterconnect"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="AcceleratorInterconnect", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=79797525, + optional=True, + ) + + class AcceleratorTopologiesInfo(proto.Message): r"""Info for accelerator topologies within a densely packed reservation. @@ -3272,6 +3743,12 @@ class AddAssociationRegionNetworkFirewallPolicyRequest(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + associated_policy_to_be_replaced (str): + Name of the firewall policy associated with the target + network to swap association with. This field is mutually + exclusive with 'replace_existing_association'. + + This field is a member of `oneof`_ ``_associated_policy_to_be_replaced``. firewall_policy (str): Name of the firewall policy to update. firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): @@ -3311,6 +3788,11 @@ class AddAssociationRegionNetworkFirewallPolicyRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ + associated_policy_to_be_replaced: str = proto.Field( + proto.STRING, + number=240901404, + optional=True, + ) firewall_policy: str = proto.Field( proto.STRING, number=498173265, @@ -5508,17 +5990,6 @@ class AggregatedListAcceleratorTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -5556,11 +6027,6 @@ class AggregatedListAcceleratorTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -5694,17 +6160,6 @@ class AggregatedListAddressesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -5742,11 +6197,6 @@ class AggregatedListAddressesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -5880,17 +6330,6 @@ class AggregatedListAutoscalersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -5928,11 +6367,6 @@ class AggregatedListAutoscalersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6066,17 +6500,6 @@ class AggregatedListBackendBucketsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6114,11 +6537,6 @@ class AggregatedListBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6252,17 +6670,6 @@ class AggregatedListBackendServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6300,11 +6707,6 @@ class AggregatedListBackendServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6438,17 +6840,6 @@ class AggregatedListDiskTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6486,11 +6877,6 @@ class AggregatedListDiskTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6624,17 +7010,6 @@ class AggregatedListDisksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6672,11 +7047,6 @@ class AggregatedListDisksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6810,17 +7180,6 @@ class AggregatedListForwardingRulesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -6858,11 +7217,6 @@ class AggregatedListForwardingRulesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -6996,17 +7350,6 @@ class AggregatedListFutureReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7044,11 +7387,6 @@ class AggregatedListFutureReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7182,17 +7520,6 @@ class AggregatedListGlobalOperationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7230,11 +7557,6 @@ class AggregatedListGlobalOperationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7369,17 +7691,6 @@ class AggregatedListGlobalVmExtensionPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7417,11 +7728,6 @@ class AggregatedListGlobalVmExtensionPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7429,8 +7735,8 @@ class AggregatedListGlobalVmExtensionPoliciesRequest(proto.Message): ) -class AggregatedListHealthChecksRequest(proto.Message): - r"""A request message for HealthChecks.AggregatedList. See the +class AggregatedListHaControllersRequest(proto.Message): + r"""A request message for HaControllers.AggregatedList. See the method description for details. @@ -7554,18 +7860,7 @@ class AggregatedListHealthChecksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7603,11 +7898,6 @@ class AggregatedListHealthChecksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7615,9 +7905,9 @@ class AggregatedListHealthChecksRequest(proto.Message): ) -class AggregatedListInstanceGroupManagersRequest(proto.Message): - r"""A request message for InstanceGroupManagers.AggregatedList. - See the method description for details. +class AggregatedListHealthChecksRequest(proto.Message): + r"""A request message for HealthChecks.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -7740,18 +8030,7 @@ class AggregatedListInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7789,11 +8068,6 @@ class AggregatedListInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7801,9 +8075,9 @@ class AggregatedListInstanceGroupManagersRequest(proto.Message): ) -class AggregatedListInstanceGroupsRequest(proto.Message): - r"""A request message for InstanceGroups.AggregatedList. See the - method description for details. +class AggregatedListInstanceGroupManagersRequest(proto.Message): + r"""A request message for InstanceGroupManagers.AggregatedList. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -7927,17 +8201,6 @@ class AggregatedListInstanceGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -7975,11 +8238,6 @@ class AggregatedListInstanceGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -7987,9 +8245,9 @@ class AggregatedListInstanceGroupsRequest(proto.Message): ) -class AggregatedListInstanceTemplatesRequest(proto.Message): - r"""A request message for InstanceTemplates.AggregatedList. See - the method description for details. +class AggregatedListInstanceGroupsRequest(proto.Message): + r"""A request message for InstanceGroups.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -8112,18 +8370,7 @@ class AggregatedListInstanceTemplatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8161,11 +8408,6 @@ class AggregatedListInstanceTemplatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8173,9 +8415,9 @@ class AggregatedListInstanceTemplatesRequest(proto.Message): ) -class AggregatedListInstancesRequest(proto.Message): - r"""A request message for Instances.AggregatedList. See the - method description for details. +class AggregatedListInstanceTemplatesRequest(proto.Message): + r"""A request message for InstanceTemplates.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -8298,18 +8540,7 @@ class AggregatedListInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8347,11 +8578,6 @@ class AggregatedListInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8359,9 +8585,9 @@ class AggregatedListInstancesRequest(proto.Message): ) -class AggregatedListInstantSnapshotsRequest(proto.Message): - r"""A request message for InstantSnapshots.AggregatedList. See - the method description for details. +class AggregatedListInstancesRequest(proto.Message): + r"""A request message for Instances.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -8485,17 +8711,6 @@ class AggregatedListInstantSnapshotsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8533,11 +8748,6 @@ class AggregatedListInstantSnapshotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8545,9 +8755,9 @@ class AggregatedListInstantSnapshotsRequest(proto.Message): ) -class AggregatedListInterconnectAttachmentsRequest(proto.Message): - r"""A request message for InterconnectAttachments.AggregatedList. - See the method description for details. +class AggregatedListInstantSnapshotsRequest(proto.Message): + r"""A request message for InstantSnapshots.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -8671,17 +8881,6 @@ class AggregatedListInterconnectAttachmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8719,11 +8918,6 @@ class AggregatedListInterconnectAttachmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8731,9 +8925,9 @@ class AggregatedListInterconnectAttachmentsRequest(proto.Message): ) -class AggregatedListMachineTypesRequest(proto.Message): - r"""A request message for MachineTypes.AggregatedList. See the - method description for details. +class AggregatedListInterconnectAttachmentsRequest(proto.Message): + r"""A request message for InterconnectAttachments.AggregatedList. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -8857,17 +9051,6 @@ class AggregatedListMachineTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -8905,11 +9088,6 @@ class AggregatedListMachineTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -8917,9 +9095,9 @@ class AggregatedListMachineTypesRequest(proto.Message): ) -class AggregatedListNetworkAttachmentsRequest(proto.Message): - r"""A request message for NetworkAttachments.AggregatedList. See - the method description for details. +class AggregatedListMachineTypesRequest(proto.Message): + r"""A request message for MachineTypes.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9043,17 +9221,6 @@ class AggregatedListNetworkAttachmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9091,11 +9258,6 @@ class AggregatedListNetworkAttachmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9103,10 +9265,9 @@ class AggregatedListNetworkAttachmentsRequest(proto.Message): ) -class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): - r"""A request message for - NetworkEdgeSecurityServices.AggregatedList. See the method - description for details. +class AggregatedListNetworkAttachmentsRequest(proto.Message): + r"""A request message for NetworkAttachments.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9229,18 +9390,7 @@ class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9278,11 +9428,6 @@ class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9290,9 +9435,10 @@ class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): ) -class AggregatedListNetworkEndpointGroupsRequest(proto.Message): - r"""A request message for NetworkEndpointGroups.AggregatedList. - See the method description for details. +class AggregatedListNetworkEdgeSecurityServicesRequest(proto.Message): + r"""A request message for + NetworkEdgeSecurityServices.AggregatedList. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9415,18 +9561,7 @@ class AggregatedListNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9464,11 +9599,6 @@ class AggregatedListNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9476,8 +9606,8 @@ class AggregatedListNetworkEndpointGroupsRequest(proto.Message): ) -class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): - r"""A request message for NetworkFirewallPolicies.AggregatedList. +class AggregatedListNetworkEndpointGroupsRequest(proto.Message): + r"""A request message for NetworkEndpointGroups.AggregatedList. See the method description for details. @@ -9602,17 +9732,6 @@ class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9650,11 +9769,6 @@ class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9662,9 +9776,9 @@ class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): ) -class AggregatedListNodeGroupsRequest(proto.Message): - r"""A request message for NodeGroups.AggregatedList. See the - method description for details. +class AggregatedListNetworkFirewallPoliciesRequest(proto.Message): + r"""A request message for NetworkFirewallPolicies.AggregatedList. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -9788,17 +9902,6 @@ class AggregatedListNodeGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -9836,11 +9939,6 @@ class AggregatedListNodeGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -9848,8 +9946,8 @@ class AggregatedListNodeGroupsRequest(proto.Message): ) -class AggregatedListNodeTemplatesRequest(proto.Message): - r"""A request message for NodeTemplates.AggregatedList. See the +class AggregatedListNodeGroupsRequest(proto.Message): + r"""A request message for NodeGroups.AggregatedList. See the method description for details. @@ -9974,17 +10072,6 @@ class AggregatedListNodeTemplatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10022,11 +10109,6 @@ class AggregatedListNodeTemplatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10034,8 +10116,8 @@ class AggregatedListNodeTemplatesRequest(proto.Message): ) -class AggregatedListNodeTypesRequest(proto.Message): - r"""A request message for NodeTypes.AggregatedList. See the +class AggregatedListNodeTemplatesRequest(proto.Message): + r"""A request message for NodeTemplates.AggregatedList. See the method description for details. @@ -10160,17 +10242,6 @@ class AggregatedListNodeTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10208,11 +10279,6 @@ class AggregatedListNodeTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10220,9 +10286,9 @@ class AggregatedListNodeTypesRequest(proto.Message): ) -class AggregatedListPacketMirroringsRequest(proto.Message): - r"""A request message for PacketMirrorings.AggregatedList. See - the method description for details. +class AggregatedListNodeTypesRequest(proto.Message): + r"""A request message for NodeTypes.AggregatedList. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10346,17 +10412,6 @@ class AggregatedListPacketMirroringsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10394,11 +10449,6 @@ class AggregatedListPacketMirroringsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10406,9 +10456,9 @@ class AggregatedListPacketMirroringsRequest(proto.Message): ) -class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): - r"""A request message for PublicDelegatedPrefixes.AggregatedList. - See the method description for details. +class AggregatedListPacketMirroringsRequest(proto.Message): + r"""A request message for PacketMirrorings.AggregatedList. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10531,18 +10581,7 @@ class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10580,11 +10619,6 @@ class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10592,9 +10626,9 @@ class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): ) -class AggregatedListRegionCommitmentsRequest(proto.Message): - r"""A request message for RegionCommitments.AggregatedList. See - the method description for details. +class AggregatedListPublicDelegatedPrefixesRequest(proto.Message): + r"""A request message for PublicDelegatedPrefixes.AggregatedList. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -10717,18 +10751,7 @@ class AggregatedListRegionCommitmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the project scoping this request. service_project_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10766,11 +10789,176 @@ class AggregatedListRegionCommitmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( + service_project_number: int = proto.Field( + proto.INT64, + number=316757497, + optional=True, + ) + + +class AggregatedListRegionCommitmentsRequest(proto.Message): + r"""A request message for RegionCommitments.AggregatedList. See + the method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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``. + include_all_scopes (bool): + Indicates whether every visible scope for + each scope type (zone, region, global) should be + included in the response. For new resource types + added after this field, the flag has no effect + as new resource types will always include every + visible scope for each scope type in response. + For resource types which predate this field, if + this flag is omitted or false, only scopes of + the scope types where the resource type is + expected to be found will be included. + + This field is a member of `oneof`_ ``_include_all_scopes``. + max_results (int): + The maximum number of results per page that should be + returned. If the number of available results is larger than + ``maxResults``, Compute Engine returns a ``nextPageToken`` + that can be used to get the next page of results in + subsequent list requests. Acceptable values are ``0`` to + ``500``, inclusive. (Default: ``500``) + + This field is a member of `oneof`_ ``_max_results``. + order_by (str): + Sorts list results by a certain order. By default, results + are returned in alphanumerical order based on the resource + name. + + You can also sort results in descending order based on the + creation timestamp using + ``orderBy="creationTimestamp desc"``. This sorts results + based on the ``creationTimestamp`` field in reverse + chronological order (newest result first). Use this to sort + resources like operations so that the newest operation is + returned first. + + Currently, only sorting by ``name`` or + ``creationTimestamp desc`` is supported. + + This field is a member of `oneof`_ ``_order_by``. + page_token (str): + Specifies a page token to use. Set ``pageToken`` to the + ``nextPageToken`` returned by a previous list request to get + the next page of results. + + This field is a member of `oneof`_ ``_page_token``. + project (str): + Project ID for this request. + service_project_number (int): + The Shared VPC service project id or service + project number for which aggregated list request + is invoked for subnetworks list-usable api. + + This field is a member of `oneof`_ ``_service_project_number``. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, + optional=True, + ) + include_all_scopes: bool = proto.Field( proto.BOOL, - number=517198390, + number=391327988, + optional=True, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, optional=True, ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, + optional=True, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -10905,17 +11093,6 @@ class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -10953,11 +11130,6 @@ class AggregatedListRegionCompositeHealthChecksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11092,17 +11264,6 @@ class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11140,11 +11301,6 @@ class AggregatedListRegionHealthAggregationPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11279,17 +11435,6 @@ class AggregatedListRegionHealthCheckServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11327,11 +11472,6 @@ class AggregatedListRegionHealthCheckServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11465,17 +11605,6 @@ class AggregatedListRegionHealthSourcesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11513,11 +11642,6 @@ class AggregatedListRegionHealthSourcesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11652,17 +11776,6 @@ class AggregatedListRegionNotificationEndpointsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11700,11 +11813,6 @@ class AggregatedListRegionNotificationEndpointsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -11838,17 +11946,6 @@ class AggregatedListReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -11886,11 +11983,6 @@ class AggregatedListReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12024,17 +12116,6 @@ class AggregatedListResourcePoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12072,11 +12153,6 @@ class AggregatedListResourcePoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12210,17 +12286,6 @@ class AggregatedListRoutersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12258,11 +12323,6 @@ class AggregatedListRoutersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12396,17 +12456,6 @@ class AggregatedListSecurityPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12444,11 +12493,6 @@ class AggregatedListSecurityPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12582,17 +12626,6 @@ class AggregatedListServiceAttachmentsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12630,11 +12663,6 @@ class AggregatedListServiceAttachmentsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12768,17 +12796,6 @@ class AggregatedListSslCertificatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -12816,11 +12833,6 @@ class AggregatedListSslCertificatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -12954,17 +12966,6 @@ class AggregatedListSslPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13002,11 +13003,6 @@ class AggregatedListSslPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13140,17 +13136,6 @@ class AggregatedListStoragePoolTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13188,11 +13173,6 @@ class AggregatedListStoragePoolTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13326,17 +13306,6 @@ class AggregatedListStoragePoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13374,11 +13343,6 @@ class AggregatedListStoragePoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13512,17 +13476,6 @@ class AggregatedListSubnetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13595,11 +13548,6 @@ class Views(proto.Enum): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13738,17 +13686,6 @@ class AggregatedListTargetHttpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13786,11 +13723,6 @@ class AggregatedListTargetHttpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -13924,17 +13856,6 @@ class AggregatedListTargetHttpsProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -13972,11 +13893,6 @@ class AggregatedListTargetHttpsProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14110,17 +14026,6 @@ class AggregatedListTargetInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14158,11 +14063,6 @@ class AggregatedListTargetInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14296,17 +14196,6 @@ class AggregatedListTargetPoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14344,11 +14233,6 @@ class AggregatedListTargetPoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14482,17 +14366,6 @@ class AggregatedListTargetTcpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14530,11 +14403,6 @@ class AggregatedListTargetTcpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14668,17 +14536,6 @@ class AggregatedListTargetVpnGatewaysRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14716,11 +14573,6 @@ class AggregatedListTargetVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -14854,17 +14706,6 @@ class AggregatedListUrlMapsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Name of the project scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -14902,11 +14743,6 @@ class AggregatedListUrlMapsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -15040,17 +14876,6 @@ class AggregatedListVpnGatewaysRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -15088,11 +14913,6 @@ class AggregatedListVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -15226,17 +15046,6 @@ class AggregatedListVpnTunnelsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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_number (int): The Shared VPC service project id or service project number for which aggregated list request @@ -15274,11 +15083,6 @@ class AggregatedListVpnTunnelsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) service_project_number: int = proto.Field( proto.INT64, number=316757497, @@ -15546,6 +15350,12 @@ class AllocationResourceStatus(proto.Message): [Output only] Health information for the reservation. This field is a member of `oneof`_ ``_health_info``. + machine_count (int): + The number of machines in the reservation. + Only populated for families where machine to + host ratio is not 1:1 such as TPU8i. + + This field is a member of `oneof`_ ``_machine_count``. reservation_block_count (int): The number of reservation blocks associated with this reservation. @@ -15567,6 +15377,11 @@ class AllocationResourceStatus(proto.Message): optional=True, message="AllocationResourceStatusHealthInfo", ) + machine_count: int = proto.Field( + proto.INT32, + number=63727383, + optional=True, + ) reservation_block_count: int = proto.Field( proto.INT32, number=161835754, @@ -18180,6 +17995,18 @@ class AutoscalingPolicyCpuUtilization(proto.Message): PredictiveMethod enum for the list of possible values. This field is a member of `oneof`_ ``_predictive_method``. + utilization_max (float): + The upper bound of the utilization range. Must be a float + value in the range ('utilization_min', 1]. A value of 0.0 is + equivalent to leaving the field unset. + + This field is a member of `oneof`_ ``_utilization_max``. + utilization_min (float): + The lower bound of the utilization range. Must be a float + value in the range (0, 'utilization_max']. A value of 0.0 is + equivalent to leaving the field unset. + + This field is a member of `oneof`_ ``_utilization_min``. utilization_target (float): The target CPU utilization that the autoscaler maintains. Must be a float value in the range (0, 1]. If not specified, @@ -18233,6 +18060,16 @@ class PredictiveMethod(proto.Enum): number=390220737, optional=True, ) + utilization_max: float = proto.Field( + proto.DOUBLE, + number=256713159, + optional=True, + ) + utilization_min: float = proto.Field( + proto.DOUBLE, + number=256713397, + optional=True, + ) utilization_target: float = proto.Field( proto.DOUBLE, number=215905870, @@ -25028,6 +24865,10 @@ class CacheMode(proto.Enum): UNDEFINED_CACHE_MODE (0): A value indicating that the enum field is not set. + BYPASS_CACHE (372518219): + Bypasses the cache for this route. All + requests are forwarded to the origin, and + responses are not cached. CACHE_ALL_STATIC (355027945): Automatically cache static content, including common image formats, media (video and audio), @@ -25051,6 +24892,7 @@ class CacheMode(proto.Enum): """ UNDEFINED_CACHE_MODE = 0 + BYPASS_CACHE = 372518219 CACHE_ALL_STATIC = 355027945 FORCE_CACHE_ALL = 486026928 USE_ORIGIN_HEADERS = 55380261 @@ -25853,6 +25695,8 @@ class CapacityAdviceRequestInstanceFlexibilityPolicy(proto.Message): class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelection(proto.Message): r"""Machine specification. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: disks (MutableSequence[google.cloud.compute_v1.types.CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelectionAttachedDisk]): Local SSDs. @@ -25861,6 +25705,13 @@ class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelection(proto.Mess machine_types (MutableSequence[str]): Full machine-type names, e.g. "n1-standard-16". + rank (int): + Optional. Rank when prioritizing the shape + flexibilities. The instance selections are + considered in the ascending order of the rank. + If not set, defaults to 0. + + This field is a member of `oneof`_ ``_rank``. """ disks: MutableSequence[ @@ -25879,6 +25730,11 @@ class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelection(proto.Mess proto.STRING, number=79720065, ) + rank: int = proto.Field( + proto.INT64, + number=3492908, + optional=True, + ) class CapacityAdviceRequestInstanceFlexibilityPolicyInstanceSelectionAttachedDisk( @@ -26273,6 +26129,10 @@ class CapacityHistoryRequestInstanceProperties(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + disks (MutableSequence[google.cloud.compute_v1.types.CapacityHistoryRequestInstancePropertiesAttachedDisk]): + Local SSDs. + guest_accelerators (MutableSequence[google.cloud.compute_v1.types.AcceleratorConfig]): + Accelerators configuration. machine_type (str): The machine type for the VM, such as ``n2-standard-4``. @@ -26283,6 +26143,18 @@ class CapacityHistoryRequestInstanceProperties(proto.Message): This field is a member of `oneof`_ ``_scheduling``. """ + disks: MutableSequence["CapacityHistoryRequestInstancePropertiesAttachedDisk"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=95594102, + message="CapacityHistoryRequestInstancePropertiesAttachedDisk", + ) + ) + guest_accelerators: MutableSequence["AcceleratorConfig"] = proto.RepeatedField( + proto.MESSAGE, + number=463595119, + message="AcceleratorConfig", + ) machine_type: str = proto.Field( proto.STRING, number=227711026, @@ -26296,6 +26168,44 @@ class CapacityHistoryRequestInstanceProperties(proto.Message): ) +class CapacityHistoryRequestInstancePropertiesAttachedDisk(proto.Message): + r"""AttachedDisk modeled after Instance's AttachedDisk. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + type_ (str): + Specifies the type of the disk. + Check the Type enum for the list of possible + values. + + This field is a member of `oneof`_ ``_type``. + """ + + class Type(proto.Enum): + r"""Specifies the type of the disk. + + Values: + UNDEFINED_TYPE (0): + A value indicating that the enum field is not + set. + DISK_TYPE_UNSPECIFIED (333621236): + Default value, unused. + SCRATCH (496778970): + Scratch disk (Local SSD). + """ + + UNDEFINED_TYPE = 0 + DISK_TYPE_UNSPECIFIED = 333621236 + SCRATCH = 496778970 + + type_: str = proto.Field( + proto.STRING, + number=3575610, + optional=True, + ) + + class CapacityHistoryRequestInstancePropertiesScheduling(proto.Message): r"""Scheduling options. @@ -26496,6 +26406,29 @@ class CapacityHistoryResponsePriceRecord(proto.Message): ) +class CapacityPool(proto.Message): + r"""Structured representation of the capacity pool. + + Attributes: + partition_ids (MutableSequence[str]): + The list of physical topology block + identifiers. + resources (MutableSequence[str]): + A list of fully qualified resource names that + form the logical bounds. Both full and relative + URIs are supported. + """ + + partition_ids: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=451826659, + ) + resources: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=164412965, + ) + + class CircuitBreakers(proto.Message): r"""Settings controlling the volume of requests, connections and retries to this backend service. @@ -26957,13 +26890,13 @@ class Commitment(proto.Message): GRAPHICS_OPTIMIZED_G4,GRAPHICS_OPTIMIZED_G4_VGPU,MEMORY_OPTIMIZED, MEMORY_OPTIMIZED_M3,MEMORY_OPTIMIZED_X4, STORAGE_OPTIMIZED_Z3,STORAGE_OPTIMIZED_Z4DS, - STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T. For example, - type MEMORY_OPTIMIZED specifies a commitment that applies - only to eligible resources of memory optimized M1 and M2 - machine series. Type GENERAL_PURPOSE specifies a commitment - that applies only to eligible resources of general purpose - N1 machine series. Check the Type enum for the list of - possible values. + STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T,STORAGE_OPTIMIZED_Z4M. + For example, type MEMORY_OPTIMIZED specifies a commitment + that applies only to eligible resources of memory optimized + M1 and M2 machine series. Type GENERAL_PURPOSE specifies a + commitment that applies only to eligible resources of + general purpose N1 machine series. Check the Type enum for + the list of possible values. This field is a member of `oneof`_ ``_type``. """ @@ -27069,11 +27002,12 @@ class Type(proto.Enum): GRAPHICS_OPTIMIZED_G4,GRAPHICS_OPTIMIZED_G4_VGPU,MEMORY_OPTIMIZED, MEMORY_OPTIMIZED_M3,MEMORY_OPTIMIZED_X4, STORAGE_OPTIMIZED_Z3,STORAGE_OPTIMIZED_Z4DS, - STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T. For example, type - MEMORY_OPTIMIZED specifies a commitment that applies only to - eligible resources of memory optimized M1 and M2 machine series. - Type GENERAL_PURPOSE specifies a commitment that applies only to - eligible resources of general purpose N1 machine series. + STORAGE_OPTIMIZED_Z4DH,STORAGE_OPTIMIZED_Z4D4T,STORAGE_OPTIMIZED_Z4M. + For example, type MEMORY_OPTIMIZED specifies a commitment that + applies only to eligible resources of memory optimized M1 and M2 + machine series. Type GENERAL_PURPOSE specifies a commitment that + applies only to eligible resources of general purpose N1 machine + series. Values: UNDEFINED_TYPE (0): @@ -27101,6 +27035,8 @@ class Type(proto.Enum): No description available. COMPUTE_OPTIMIZED_H4D (383251320): No description available. + COMPUTE_OPTIMIZED_H4D_3TB (443379866): + CUD bucket for COMPUTE_OPTIMIZED_H4D_3TB machines. GENERAL_PURPOSE (299793543): No description available. GENERAL_PURPOSE_C4 (301911817): @@ -27177,6 +27113,8 @@ class Type(proto.Enum): CUD bucket for Z4DH machines. STORAGE_OPTIMIZED_Z4DS (35233733): CUD bucket for Z4DS machines. + STORAGE_OPTIMIZED_Z4M (157002327): + CUD bucket for Z4M (bare metal) machines. TYPE_UNSPECIFIED (437714322): Note for internal users: When adding a new enum Type for v1, make sure to also add it in the comment for the @@ -27196,6 +27134,7 @@ class Type(proto.Enum): COMPUTE_OPTIMIZED_C3D = 383246484 COMPUTE_OPTIMIZED_H3 = 428004939 COMPUTE_OPTIMIZED_H4D = 383251320 + COMPUTE_OPTIMIZED_H4D_3TB = 443379866 GENERAL_PURPOSE = 299793543 GENERAL_PURPOSE_C4 = 301911817 GENERAL_PURPOSE_C4A = 232460888 @@ -27231,6 +27170,7 @@ class Type(proto.Enum): STORAGE_OPTIMIZED_Z4D4T = 18503022 STORAGE_OPTIMIZED_Z4DH = 35233722 STORAGE_OPTIMIZED_Z4DS = 35233733 + STORAGE_OPTIMIZED_Z4M = 157002327 TYPE_UNSPECIFIED = 437714322 auto_renew: bool = proto.Field( @@ -29343,6 +29283,66 @@ class DateTime(proto.Message): ) +class DeleteAcceleratorInterconnectRequest(proto.Message): + r"""A request message for AcceleratorInterconnects.Delete. See + the method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + accelerator_interconnect (str): + The name of the accelerator interconnect to + delete. Name should conform to RFC1035. + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + zone (str): + The name of thezone where the + accelerator interconnect is located. Zone name + should conform to RFC1035. + """ + + accelerator_interconnect: str = proto.Field( + proto.STRING, + number=313143778, + ) + 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 DeleteAccessConfigInstanceRequest(proto.Message): r"""A request message for Instances.DeleteAccessConfig. See the method description for details. @@ -30328,6 +30328,62 @@ class DeleteGlobalVmExtensionPolicyRequest(proto.Message): ) +class DeleteHaControllerRequest(proto.Message): + r"""A request message for HaControllers.Delete. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + force (bool): + Force-deletes HA Controller when the Delete + is stuck. Instance that is not primary at the + moment will also be deleted. Can only be used + against the HA Controller resource that is + already being deleted. + + This field is a member of `oneof`_ ``_force``. + ha_controller (str): + Name of the HaController resource to delete. + project (str): + Project ID for this request. + region (str): + Name of the region for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + This field is a member of `oneof`_ ``_request_id``. + """ + + force: bool = proto.Field( + proto.BOOL, + number=97618667, + optional=True, + ) + ha_controller: str = proto.Field( + proto.STRING, + number=375850658, + ) + 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 DeleteHealthCheckRequest(proto.Message): r"""A request message for HealthChecks.Delete. See the method description for details. @@ -38902,6 +38958,58 @@ class ExternalVpnGatewayParams(proto.Message): ) +class FailoverHaControllerRequest(proto.Message): + r"""A request message for HaControllers.Failover. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + ha_controller (str): + ID of the HaController resource to update. + ha_controllers_failover_request_resource (google.cloud.compute_v1.types.HaControllersFailoverRequest): + 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. + + This field is a member of `oneof`_ ``_request_id``. + """ + + ha_controller: str = proto.Field( + proto.STRING, + number=375850658, + ) + ha_controllers_failover_request_resource: "HaControllersFailoverRequest" = ( + proto.Field( + proto.MESSAGE, + number=301008573, + message="HaControllersFailoverRequest", + ) + ) + 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 FileContentBuffer(proto.Message): r""" @@ -39735,6 +39843,16 @@ class FirewallPolicyAssociation(proto.Message): The name for an association. This field is a member of `oneof`_ ``_name``. + priority (int): + An integer indicating the priority of an association. The + priority must be a positive value between 1 and 2147483647. + Firewall Policies are evaluated from highest to lowest + priority where 1 is the highest priority and 2147483647 is + the lowest priority. The default value is ``1000``. If two + associations have the same priority then lexicographical + order on association names is applied. + + This field is a member of `oneof`_ ``_priority``. short_name (str): Output only. [Output Only] The short name of the firewall policy of the association. @@ -39762,6 +39880,11 @@ class FirewallPolicyAssociation(proto.Message): number=3373707, optional=True, ) + priority: int = proto.Field( + proto.INT32, + number=445151652, + optional=True, + ) short_name: str = proto.Field( proto.STRING, number=492051566, @@ -41844,6 +41967,13 @@ class FutureReservation(proto.Message): should be set to false. This field is a member of `oneof`_ ``_auto_delete_auto_created_reservations``. + colocation_resource (str): + Full or partial URL of an existing future + reservation to indicate intent for reserving + capacity in the same cluster as the colocation + resource. + + This field is a member of `oneof`_ ``_colocation_resource``. commitment_info (google.cloud.compute_v1.types.FutureReservationCommitmentInfo): If not present, then FR will not deliver a new commitment or update an existing commitment. @@ -42132,6 +42262,11 @@ class SchedulingType(proto.Enum): number=491352490, optional=True, ) + colocation_resource: str = proto.Field( + proto.STRING, + number=32901740, + optional=True, + ) commitment_info: "FutureReservationCommitmentInfo" = proto.Field( proto.MESSAGE, number=164362136, @@ -44001,6 +44136,36 @@ class PortSpecification(proto.Enum): ) +class GetAcceleratorInterconnectRequest(proto.Message): + r"""A request message for AcceleratorInterconnects.Get. See the + method description for details. + + Attributes: + accelerator_interconnect (str): + The name of the accelerator interconnect. + Name should conform to RFC1035. + project (str): + Project ID for this request. + zone (str): + The name of thezone where the + accelerator interconnect is located. Zone name + should conform to RFC1035. + """ + + accelerator_interconnect: str = proto.Field( + proto.STRING, + number=313143778, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + + class GetAcceleratorTypeRequest(proto.Message): r"""A request message for AcceleratorTypes.Get. See the method description for details. @@ -44714,6 +44879,21 @@ class View(proto.Enum): ) +class GetGlobalFrontendSettingRequest(proto.Message): + r"""A request message for GlobalFrontendSettingsService.Get. See + the method description for details. + + Attributes: + project (str): + Required. Project ID for this request. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + + class GetGlobalNetworkEndpointGroupRequest(proto.Message): r"""A request message for GlobalNetworkEndpointGroups.Get. See the method description for details. @@ -44881,6 +45061,33 @@ class GetGuestAttributesInstanceRequest(proto.Message): ) +class GetHaControllerRequest(proto.Message): + r"""A request message for HaControllers.Get. See the method + description for details. + + Attributes: + ha_controller (str): + Name of the HaController resource to return. + project (str): + Project ID for this request. + region (str): + Name of the region for this request. + """ + + ha_controller: str = proto.Field( + proto.STRING, + number=375850658, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + + class GetHealthBackendServiceRequest(proto.Message): r"""A request message for BackendServices.GetHealth. See the method description for details. @@ -46606,6 +46813,34 @@ class GetImageRequest(proto.Message): ) +class GetImageViewRequest(proto.Message): + r"""A request message for ImageViews.Get. See the method + description for details. + + Attributes: + project (str): + Required. Project ID for this request. + region (str): + Required. Name of the region for this + request. + resource_id (str): + Name of the image resource to return. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + resource_id: str = proto.Field( + proto.STRING, + number=160795372, + ) + + class GetInstanceGroupManagerRequest(proto.Message): r"""A request message for InstanceGroupManagers.Get. See the method description for details. @@ -47075,6 +47310,27 @@ class GetMacsecConfigInterconnectRequest(proto.Message): ) +class GetManagedRulesetRequest(proto.Message): + r"""A request message for ManagedRulesets.Get. See the method + description for details. + + Attributes: + managed_ruleset (str): + Name of the managed ruleset to return. + project (str): + Project ID for this request. + """ + + managed_ruleset: str = proto.Field( + proto.STRING, + number=447322950, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + + class GetNamedSetRouterRequest(proto.Message): r"""A request message for Routers.GetNamedSet. See the method description for details. @@ -47282,17 +47538,6 @@ class GetNatMappingInfoRoutersRequest(proto.Message): 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``. router (str): Name of the Router resource to query for Nat Mapping information of VM endpoints. @@ -47331,11 +47576,6 @@ class GetNatMappingInfoRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) router: str = proto.Field( proto.STRING, number=148608841, @@ -50389,17 +50629,6 @@ class GetXpnResourcesProjectsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -50426,11 +50655,6 @@ class GetXpnResourcesProjectsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class GetZoneOperationRequest(proto.Message): @@ -50551,120 +50775,247 @@ class GlobalAddressesMoveRequest(proto.Message): ) -class GlobalNetworkEndpointGroupsAttachEndpointsRequest(proto.Message): - r""" - - Attributes: - network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): - The list of network endpoints to be attached. - """ - - network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( - proto.MESSAGE, - number=149850285, - message="NetworkEndpoint", - ) +class GlobalFrontendSettings(proto.Message): + r"""Represents the Global Frontend Bundle settings for a single + project. -class GlobalNetworkEndpointGroupsDetachEndpointsRequest(proto.Message): - r""" + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): - The list of network endpoints to be detached. - """ - - network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( - proto.MESSAGE, - number=149850285, - message="NetworkEndpoint", - ) - + bundle_type (str): + Customer-settable bundle type. + Check the BundleType enum for the list of + possible values. -class GlobalOrganizationSetPolicyRequest(proto.Message): - r""" + This field is a member of `oneof`_ ``_bundle_type``. + creation_timestamp (str): + Output only. [Output Only] Creation timestamp in RFC3339 + text format. - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + Output only. [Output Only] An optional description of this + resource. - Attributes: - bindings (MutableSequence[google.cloud.compute_v1.types.Binding]): - Flatten Policy to create a backward - compatible wire-format. Deprecated. Use 'policy' - to specify bindings. + This field is a member of `oneof`_ ``_description``. etag (str): - Flatten Policy to create a backward - compatible wire-format. Deprecated. Use 'policy' - to specify the etag. + Output only. For optimistic locking. This field is a member of `oneof`_ ``_etag``. - policy (google.cloud.compute_v1.types.Policy): - REQUIRED: The complete policy to be applied - to the 'resource'. The size of the policy is - limited to a few 10s of KB. An empty policy is - in general a valid policy but certain services - (like Projects) might reject them. + 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`_ ``_policy``. + This field is a member of `oneof`_ ``_id``. + name (str): + Output only. OUTPUT_ONLY fields [Output Only] Name of the + resource. 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``. """ - bindings: MutableSequence["Binding"] = proto.RepeatedField( - proto.MESSAGE, - number=403251854, - message="Binding", + class BundleType(proto.Enum): + r"""Customer-settable bundle type. + + Values: + UNDEFINED_BUNDLE_TYPE (0): + A value indicating that the enum field is not + set. + BUNDLE_TYPE_UNSPECIFIED (466587567): + Bundling is not active. + GLOBAL_FRONT_END (182122473): + Standard Global Frontend bundle. + INDIVIDUAL (438800025): + Ala Carte mode. + """ + + UNDEFINED_BUNDLE_TYPE = 0 + BUNDLE_TYPE_UNSPECIFIED = 466587567 + GLOBAL_FRONT_END = 182122473 + INDIVIDUAL = 438800025 + + bundle_type: str = proto.Field( + proto.STRING, + number=291903703, + optional=True, + ) + creation_timestamp: str = proto.Field( + proto.STRING, + number=30525366, + optional=True, + ) + description: str = proto.Field( + proto.STRING, + number=422937596, + optional=True, ) etag: str = proto.Field( proto.STRING, number=3123477, optional=True, ) - policy: "Policy" = proto.Field( - proto.MESSAGE, - number=91071794, + id: int = proto.Field( + proto.UINT64, + number=3355, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + self_link: str = proto.Field( + proto.STRING, + number=456214797, optional=True, - message="Policy", ) -class GlobalSetLabelsRequest(proto.Message): - r""" +class GlobalFrontendSettingsPatchResponse(proto.Message): + r"""Response to an UpdateGlobalFrontendSettingsRequest. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - label_fingerprint (str): - The fingerprint of the previous set of labels - for this resource, used to detect conflicts. The - fingerprint is initially generated by Compute - Engine and changes after every request to modify - or update labels. You must always provide an - up-to-date fingerprint hash when updating or - changing labels, otherwise the request will fail - with error412 conditionNotMet. Make a get() - request to the resource to get the latest - fingerprint. + operation (google.cloud.compute_v1.types.Operation): + The Operation resource for this long-running + operation. - This field is a member of `oneof`_ ``_label_fingerprint``. - labels (MutableMapping[str, str]): - A list of labels to apply for this resource. - Each label must comply with the - requirements for labels. For - example,"webserver-frontend": "images". A label - value can also be empty (e.g. "my-label": ""). + This field is a member of `oneof`_ ``_operation``. """ - label_fingerprint: str = proto.Field( - proto.STRING, - number=178124825, + operation: "Operation" = proto.Field( + proto.MESSAGE, + number=52090215, optional=True, + message="Operation", ) - labels: MutableMapping[str, str] = proto.MapField( - proto.STRING, - proto.STRING, - number=500195327, + + +class GlobalNetworkEndpointGroupsAttachEndpointsRequest(proto.Message): + r""" + + Attributes: + network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): + The list of network endpoints to be attached. + """ + + network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( + proto.MESSAGE, + number=149850285, + message="NetworkEndpoint", ) -class GlobalSetPolicyRequest(proto.Message): +class GlobalNetworkEndpointGroupsDetachEndpointsRequest(proto.Message): + r""" + + Attributes: + network_endpoints (MutableSequence[google.cloud.compute_v1.types.NetworkEndpoint]): + The list of network endpoints to be detached. + """ + + network_endpoints: MutableSequence["NetworkEndpoint"] = proto.RepeatedField( + proto.MESSAGE, + number=149850285, + message="NetworkEndpoint", + ) + + +class GlobalOrganizationSetPolicyRequest(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + bindings (MutableSequence[google.cloud.compute_v1.types.Binding]): + Flatten Policy to create a backward + compatible wire-format. Deprecated. Use 'policy' + to specify bindings. + etag (str): + Flatten Policy to create a backward + compatible wire-format. Deprecated. Use 'policy' + to specify the etag. + + This field is a member of `oneof`_ ``_etag``. + policy (google.cloud.compute_v1.types.Policy): + REQUIRED: The complete policy to be applied + to the 'resource'. The size of the policy is + limited to a few 10s of KB. An empty policy is + in general a valid policy but certain services + (like Projects) might reject them. + + This field is a member of `oneof`_ ``_policy``. + """ + + bindings: MutableSequence["Binding"] = proto.RepeatedField( + proto.MESSAGE, + number=403251854, + message="Binding", + ) + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) + policy: "Policy" = proto.Field( + proto.MESSAGE, + number=91071794, + optional=True, + message="Policy", + ) + + +class GlobalSetLabelsRequest(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + label_fingerprint (str): + The fingerprint of the previous set of labels + for this resource, used to detect conflicts. The + fingerprint is initially generated by Compute + Engine and changes after every request to modify + or update labels. You must always provide an + up-to-date fingerprint hash when updating or + changing labels, otherwise the request will fail + with error412 conditionNotMet. Make a get() + request to the resource to get the latest + fingerprint. + + This field is a member of `oneof`_ ``_label_fingerprint``. + labels (MutableMapping[str, str]): + A list of labels to apply for this resource. + Each label must comply with the + requirements for labels. For + example,"webserver-frontend": "images". A label + value can also be empty (e.g. "my-label": ""). + """ + + label_fingerprint: str = proto.Field( + proto.STRING, + number=178124825, + optional=True, + ) + labels: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=500195327, + ) + + +class GlobalSetPolicyRequest(proto.Message): r""" .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -52289,54 +52640,22 @@ class ProxyHeader(proto.Enum): ) -class HealthAggregationPoliciesScopedList(proto.Message): - r""" +class HaController(proto.Message): + r"""HaController handles failover for a VM Instance. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - health_aggregation_policies (MutableSequence[google.cloud.compute_v1.types.HealthAggregationPolicy]): - A list of HealthAggregationPolicys contained - in this scope. - warning (google.cloud.compute_v1.types.Warning): - Informational warning which replaces the list - of health aggregation policies when the list is - empty. - - This field is a member of `oneof`_ ``_warning``. - """ - - health_aggregation_policies: MutableSequence["HealthAggregationPolicy"] = ( - proto.RepeatedField( - proto.MESSAGE, - number=87589904, - message="HealthAggregationPolicy", - ) - ) - warning: "Warning" = proto.Field( - proto.MESSAGE, - number=50704284, - optional=True, - message="Warning", - ) + backend_services (MutableSequence[str]): + Advanced configuration option. If specified, + these Backend Services need to be pre-created. - -class HealthAggregationPolicy(proto.Message): - r"""Represents a health aggregation policy. - - A health aggregation policy resource defines a policy to - aggregate health. - - For more information, see - Health checks overview. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: + Currently, only one backend service can be + specified, and it must be L4 Internal Load + Balancer (ILB). creation_timestamp (str): - Output only. [Output Only] Creation timestamp inRFC3339 text - format. + Output only. [Output Only] Creation timestamp in RFC3339 + text format. This field is a member of `oneof`_ ``_creation_timestamp``. description (str): @@ -52345,61 +52664,34 @@ class HealthAggregationPolicy(proto.Message): resource. This field is a member of `oneof`_ ``_description``. - fingerprint (str): - Fingerprint of this resource. A hash of the - contents stored in this object. This field is - used in optimistic locking. This field will be - ignored when inserting a - HealthAggregationPolicy. An up-to-date - fingerprint must be provided in order to patch - the HealthAggregationPolicy; Otherwise, the - request will fail with error 412 - conditionNotMet. To see the latest fingerprint, - make a get() request to retrieve the - HealthAggregationPolicy. - - This field is a member of `oneof`_ ``_fingerprint``. - healthy_percent_threshold (int): - Can only be set if the policyType field - isBACKEND_SERVICE_POLICY. Specifies the threshold (as a - percentage) of healthy endpoints required in order to - consider the aggregated health result HEALTHY. Defaults to - 60. Must be in range [0, 100]. Not applicable if the - policyType field isDNB_PUBLIC_IP_POLICY. Can be mutated. - This field is optional, and will be set to the default if - unspecified. Note that both this threshold and - minHealthyThreshold must be satisfied in order for HEALTHY - to be the aggregated result. "Endpoints" refers to network - endpoints within a Network Endpoint Group or instances - within an Instance Group. + failover_initiation (str): + Indicates how failover should be initiated. + Check the FailoverInitiation enum for the list + of possible values. - This field is a member of `oneof`_ ``_healthy_percent_threshold``. + This field is a member of `oneof`_ ``_failover_initiation``. 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``. + instance_name (str): + Name of the instance that HaController is in charge of. If + not specified the HaController's resource name will be used + instead. 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`_ ``_instance_name``. kind (str): Output only. [Output Only] Type of the resource. - Alwayscompute#healthAggregationPolicy for health aggregation - policies. + Alwayscompute#haController for HaControllers. This field is a member of `oneof`_ ``_kind``. - min_healthy_threshold (int): - Can only be set if the policyType field - isBACKEND_SERVICE_POLICY. Specifies the minimum number of - healthy endpoints required in order to consider the - aggregated health result HEALTHY. Defaults to 1. Must be - positive. Not applicable if the policyType field - isDNB_PUBLIC_IP_POLICY. Can be mutated. This field is - optional, and will be set to the default if unspecified. - Note that both this threshold and healthyPercentThreshold - must be satisfied in order for HEALTHY to be the aggregated - result. "Endpoints" refers to network endpoints within a - Network Endpoint Group or instances within an Instance - Group. - - This field is a member of `oneof`_ ``_min_healthy_threshold``. name (str): Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, @@ -52411,56 +52703,125 @@ class HealthAggregationPolicy(proto.Message): except the last character, which cannot be a dash. This field is a member of `oneof`_ ``_name``. - policy_type (str): - Specifies the type of the healthAggregationPolicy. The only - allowed value for global resources is DNS_PUBLIC_IP_POLICY. - The only allowed value for regional resources is - BACKEND_SERVICE_POLICY. Must be specified when the - healthAggregationPolicy is created, and cannot be mutated. - Check the PolicyType enum for the list of possible values. + networking_auto_configuration (google.cloud.compute_v1.types.HaControllerNetworkingAutoConfiguration): + Basic networking configuration. Required + backend services and forwarding rules will be + automatically created with default parameters. - This field is a member of `oneof`_ ``_policy_type``. + This field is a member of `oneof`_ ``_networking_auto_configuration``. region (str): Output only. [Output Only] URL of the region where the - health aggregation policy resides. This field applies only - to the regional resource. You must specify this field as - part of the HTTP request URL. It is not settable as a field - in the request body. + resource resides. You must specify this field as part of the + HTTP request URL. It is not settable as a field in the + request body. This field is a member of `oneof`_ ``_region``. self_link (str): - Output only. [Output Only] Server-defined URL for the + 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 with id for - the resource. + Output only. [Output Only] Server-defined URL for this + resource with the resource id. This field is a member of `oneof`_ ``_self_link_with_id``. + state (str): + Output only. The current state of the HA + Controller. Check the State enum for the list of + possible values. + + This field is a member of `oneof`_ ``_state``. + status (google.cloud.compute_v1.types.HaControllerStatus): + Output only. [Output Only] Status information for the + HaController resource. + + This field is a member of `oneof`_ ``_status``. + zone_configurations (MutableMapping[str, google.cloud.compute_v1.types.HaControllerZoneConfiguration]): + Map of zone configurations + Key: name of the zone + Value: ZoneConfiguration """ - class PolicyType(proto.Enum): - r"""Specifies the type of the healthAggregationPolicy. The only allowed - value for global resources is DNS_PUBLIC_IP_POLICY. The only allowed - value for regional resources is BACKEND_SERVICE_POLICY. Must be - specified when the healthAggregationPolicy is created, and cannot be - mutated. + class FailoverInitiation(proto.Enum): + r"""Indicates how failover should be initiated. Values: - UNDEFINED_POLICY_TYPE (0): + UNDEFINED_FAILOVER_INITIATION (0): A value indicating that the enum field is not set. - BACKEND_SERVICE_POLICY (415582023): - No description available. - DNS_PUBLIC_IP_POLICY (366354794): + AUTOMATIC (165298699): + Failover will be initiated automatically in + case of an outage + FAILOVER_INITIATION_UNSPECIFIED (468387457): No description available. + MANUAL_ONLY (261251205): + Failover will be initiated only when + compute.haControllers.failover method is called. """ - UNDEFINED_POLICY_TYPE = 0 - BACKEND_SERVICE_POLICY = 415582023 - DNS_PUBLIC_IP_POLICY = 366354794 + UNDEFINED_FAILOVER_INITIATION = 0 + AUTOMATIC = 165298699 + FAILOVER_INITIATION_UNSPECIFIED = 468387457 + MANUAL_ONLY = 261251205 + + class State(proto.Enum): + r"""Output only. The current state of the HA Controller. + Values: + UNDEFINED_STATE (0): + A value indicating that the enum field is not + set. + ACTIVE (314733318): + The HA Controller is active and ready to + perform failover. + CREATING (455564985): + The HA Controller is being created. + DELETING (528602024): + The HA Controller is being deleted. + FAILOVER_IN_PROGRESS (401022010): + The HA Controller is in the process of + failing over. + FAILOVER_UNAVAILABLE (345584739): + The HA Controller is not ready to perform + failover. + MULTI_ZONE_FAILURE (149123389): + The HA Controller requires a failover + operation to be performed but the secondary zone + is not available to failover to. + PENDING_FAILOVER (237082298): + The HA Controller requires a failover + operation to be performed. + STARTING (488820800): + The HA Controller is being started. + STATE_UNSPECIFIED (470755401): + Unspecified state. + STOPPED (444276141): + The HA Controller is stopped. + STOPPING (350791796): + The HA Controller is being stopped. + UPDATING (494614342): + The HA Controller is being updated. + """ + + UNDEFINED_STATE = 0 + ACTIVE = 314733318 + CREATING = 455564985 + DELETING = 528602024 + FAILOVER_IN_PROGRESS = 401022010 + FAILOVER_UNAVAILABLE = 345584739 + MULTI_ZONE_FAILURE = 149123389 + PENDING_FAILOVER = 237082298 + STARTING = 488820800 + STATE_UNSPECIFIED = 470755401 + STOPPED = 444276141 + STOPPING = 350791796 + UPDATING = 494614342 + + backend_services: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=388522409, + ) creation_timestamp: str = proto.Field( proto.STRING, number=30525366, @@ -52471,14 +52832,9 @@ class PolicyType(proto.Enum): number=422937596, optional=True, ) - fingerprint: str = proto.Field( + failover_initiation: str = proto.Field( proto.STRING, - number=234678500, - optional=True, - ) - healthy_percent_threshold: int = proto.Field( - proto.UINT32, - number=72242895, + number=441991849, optional=True, ) id: int = proto.Field( @@ -52486,14 +52842,14 @@ class PolicyType(proto.Enum): number=3355, optional=True, ) - kind: str = proto.Field( + instance_name: str = proto.Field( proto.STRING, - number=3292052, + number=227947509, optional=True, ) - min_healthy_threshold: int = proto.Field( - proto.UINT32, - number=132310940, + kind: str = proto.Field( + proto.STRING, + number=3292052, optional=True, ) name: str = proto.Field( @@ -52501,10 +52857,13 @@ class PolicyType(proto.Enum): number=3373707, optional=True, ) - policy_type: str = proto.Field( - proto.STRING, - number=18158119, - optional=True, + networking_auto_configuration: "HaControllerNetworkingAutoConfiguration" = ( + proto.Field( + proto.MESSAGE, + number=142342545, + optional=True, + message="HaControllerNetworkingAutoConfiguration", + ) ) region: str = proto.Field( proto.STRING, @@ -52521,24 +52880,1093 @@ class PolicyType(proto.Enum): number=44520962, optional=True, ) + state: str = proto.Field( + proto.STRING, + number=109757585, + optional=True, + ) + status: "HaControllerStatus" = proto.Field( + proto.MESSAGE, + number=181260274, + optional=True, + message="HaControllerStatus", + ) + zone_configurations: MutableMapping[str, "HaControllerZoneConfiguration"] = ( + proto.MapField( + proto.STRING, + proto.MESSAGE, + number=296036144, + message="HaControllerZoneConfiguration", + ) + ) -class HealthAggregationPolicyAggregatedList(proto.Message): - r"""Contains a list of HealthAggregationPoliciesScopedList. +class HaControllerNetworkingAutoConfiguration(proto.Message): + r"""Basic networking configuration. Required backend services and + forwarding rules will be automatically created with default + parameters. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + internal (google.cloud.compute_v1.types.HaControllerNetworkingAutoConfigurationInternal): + Internal networking configuration + + This field is a member of `oneof`_ ``_internal``. + """ + + internal: "HaControllerNetworkingAutoConfigurationInternal" = proto.Field( + proto.MESSAGE, + number=33539773, + optional=True, + message="HaControllerNetworkingAutoConfigurationInternal", + ) + + +class HaControllerNetworkingAutoConfigurationInternal(proto.Message): + r"""Internal networking configuration + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + ip_address (str): + Optional. IP addresses will be automatically + allocated according to StackType if not + provided. + + This field is a member of `oneof`_ ``_ip_address``. + ipv6_address (str): + + This field is a member of `oneof`_ ``_ipv6_address``. + stack_type (str): + Determine which IP addresses to automatically + create. Field and option naming consistent with + NetworkInterface configuration on Instances. + Check the StackType enum for the list of + possible values. + + This field is a member of `oneof`_ ``_stack_type``. + """ + + class StackType(proto.Enum): + r"""Determine which IP addresses to automatically create. Field + and option naming consistent with NetworkInterface configuration + on Instances. + + Values: + UNDEFINED_STACK_TYPE (0): + A value indicating that the enum field is not + set. + IPV4_IPV6 (22197249): + The HA Controller Networking Endpoint will be + assigned with both IPv4 and IPv6 addresses. + IPV4_ONLY (22373798): + The HA Controller Networking Endpoint will + only be assigned with IPv4 address. + IPV6_ONLY (79632100): + The HA Controller Networking Endpoint will + only be assigned with IPv6 address. + """ + + UNDEFINED_STACK_TYPE = 0 + IPV4_IPV6 = 22197249 + IPV4_ONLY = 22373798 + IPV6_ONLY = 79632100 + + ip_address: str = proto.Field( + proto.STRING, + number=406272220, + optional=True, + ) + ipv6_address: str = proto.Field( + proto.STRING, + number=341563804, + optional=True, + ) + stack_type: str = proto.Field( + proto.STRING, + number=425908881, + optional=True, + ) + + +class HaControllerStatus(proto.Message): + r"""Contains information about current status of the + HaController. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + failover_progress (google.cloud.compute_v1.types.HaControllerStatusFailoverProgress): + Output only. [Output Only] Contains the details of the + ongoing failover. This message is not displayed if failover + is NOT in progress. + + This field is a member of `oneof`_ ``_failover_progress``. + last_failover_info (google.cloud.compute_v1.types.HaControllerStatusFailoverProgress): + Output only. [Output Only] Contains the details of the last + successful failover. + + This field is a member of `oneof`_ ``_last_failover_info``. + ongoing_failover (bool): + Output only. [Output Only] Indicates if the failover is + currently in-progress. + + This field is a member of `oneof`_ ``_ongoing_failover``. + primary_instance (str): + Output only. [Output Only] The URL to the instance that is + intended to be primary at this moment. Primary instance will + be changed at the very beginning of a failover operation. + + This field is a member of `oneof`_ ``_primary_instance``. + primary_zone (str): + Output only. [Output Only] The name of the zone that is + intended to be primary at this moment. Primary zone will be + changed at the very beginning of a failover operation. The + zone may not be operational in the middle of a failover + operation. + + This field is a member of `oneof`_ ``_primary_zone``. + ready_for_failover (bool): + Output only. [Output Only] Indicates if the resource is + ready for initiating a failover to the secondary zone. + + This field is a member of `oneof`_ ``_ready_for_failover``. + zone_status (MutableMapping[str, google.cloud.compute_v1.types.HaControllerStatusZoneStatus]): + Output only. [Output Only] Map of zone statuses. Key: name + of the zone Value: ZoneStatus + """ + + failover_progress: "HaControllerStatusFailoverProgress" = proto.Field( + proto.MESSAGE, + number=131993306, + optional=True, + message="HaControllerStatusFailoverProgress", + ) + last_failover_info: "HaControllerStatusFailoverProgress" = proto.Field( + proto.MESSAGE, + number=12006898, + optional=True, + message="HaControllerStatusFailoverProgress", + ) + ongoing_failover: bool = proto.Field( + proto.BOOL, + number=250444086, + optional=True, + ) + primary_instance: str = proto.Field( + proto.STRING, + number=446782002, + optional=True, + ) + primary_zone: str = proto.Field( + proto.STRING, + number=496582601, + optional=True, + ) + ready_for_failover: bool = proto.Field( + proto.BOOL, + number=146529476, + optional=True, + ) + zone_status: MutableMapping[str, "HaControllerStatusZoneStatus"] = proto.MapField( + proto.STRING, + proto.MESSAGE, + number=508653541, + message="HaControllerStatusZoneStatus", + ) + + +class HaControllerStatusFailoverProgress(proto.Message): + r"""Contains information about the current failover operation. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + failover_complete_timestamp (str): + Output only. [Output Only] Timestamp of the failover + completion. Filled only if the failover is completed, in + lastFailoverInfo. + + This field is a member of `oneof`_ ``_failover_complete_timestamp``. + failover_duration (str): + Output only. The duration of the last + failover. + + This field is a member of `oneof`_ ``_failover_duration``. + failover_trigger (str): + Output only. [Output Only] Indicates if failover has been + triggered automatically or manually. Check the + FailoverTrigger enum for the list of possible values. + + This field is a member of `oneof`_ ``_failover_trigger``. + failover_trigger_timestamp (str): + Output only. [Output Only] Timestamp of the last failover + trigger. + + This field is a member of `oneof`_ ``_failover_trigger_timestamp``. + last_failover_attempt (google.cloud.compute_v1.types.HaControllerStatusFailoverProgressLastFailoverAttempt): + Output only. [Output Only] Contains details of the last + failed failover. This field is filled only if the current + failover is failing + + This field is a member of `oneof`_ ``_last_failover_attempt``. + """ + + class FailoverTrigger(proto.Enum): + r"""Output only. [Output Only] Indicates if failover has been triggered + automatically or manually. + + Values: + UNDEFINED_FAILOVER_TRIGGER (0): + A value indicating that the enum field is not + set. + AUTOMATIC (165298699): + Failover has been triggered automatically. + FAILOVER_TRIGGER_UNSPECIFIED (213753891): + No description available. + MANUAL (119397318): + Failover has been triggered manually. + """ + + UNDEFINED_FAILOVER_TRIGGER = 0 + AUTOMATIC = 165298699 + FAILOVER_TRIGGER_UNSPECIFIED = 213753891 + MANUAL = 119397318 + + failover_complete_timestamp: str = proto.Field( + proto.STRING, + number=295238141, + optional=True, + ) + failover_duration: str = proto.Field( + proto.STRING, + number=214800961, + optional=True, + ) + failover_trigger: str = proto.Field( + proto.STRING, + number=466042731, + optional=True, + ) + failover_trigger_timestamp: str = proto.Field( + proto.STRING, + number=488986946, + optional=True, + ) + last_failover_attempt: "HaControllerStatusFailoverProgressLastFailoverAttempt" = ( + proto.Field( + proto.MESSAGE, + number=205277961, + optional=True, + message="HaControllerStatusFailoverProgressLastFailoverAttempt", + ) + ) + + +class HaControllerStatusFailoverProgressLastFailoverAttempt(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + errors (google.cloud.compute_v1.types.HaControllerStatusFailoverProgressLastFailoverAttemptErrors): + Output only. [Output Only] Encountered errors during the + last attempt to process failover. + + This field is a member of `oneof`_ ``_errors``. + timestamp (str): + Output only. [Output Only] Show timestamp only if there is + an error.RFC3339 text format. + + This field is a member of `oneof`_ ``_timestamp``. + """ + + errors: "HaControllerStatusFailoverProgressLastFailoverAttemptErrors" = proto.Field( + proto.MESSAGE, + number=315977579, + optional=True, + message="HaControllerStatusFailoverProgressLastFailoverAttemptErrors", + ) + timestamp: str = proto.Field( + proto.STRING, + number=55126294, + optional=True, + ) + + +class HaControllerStatusFailoverProgressLastFailoverAttemptErrors(proto.Message): + r"""Output only. [Output Only] Encountered errors during the last + attempt to process failover. + + Attributes: + errors (MutableSequence[google.cloud.compute_v1.types.Errors]): + [Output Only] The array of errors encountered while + processing this operation. + """ + + errors: MutableSequence["Errors"] = proto.RepeatedField( + proto.MESSAGE, + number=315977579, + message="Errors", + ) + + +class HaControllerStatusZoneStatus(proto.Message): + r"""Contains the status of a specific zone. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + is_primary (bool): + Output only. [Output Only] Indicates if the zone is primary + at this moment. + + This field is a member of `oneof`_ ``_is_primary``. + is_zone_ready (bool): + Output only. [Output Only] Indicates if the zone is ready + for initiating a failover. + + This field is a member of `oneof`_ ``_is_zone_ready``. + last_error (google.cloud.compute_v1.types.HaControllerStatusZoneStatusLastError): + Output only. [Output Only] This field is filled only if the + current operation is failing. + + This field is a member of `oneof`_ ``_last_error``. + """ + + is_primary: bool = proto.Field( + proto.BOOL, + number=111802349, + optional=True, + ) + is_zone_ready: bool = proto.Field( + proto.BOOL, + number=138295685, + optional=True, + ) + last_error: "HaControllerStatusZoneStatusLastError" = proto.Field( + proto.MESSAGE, + number=121962271, + optional=True, + message="HaControllerStatusZoneStatusLastError", + ) + + +class HaControllerStatusZoneStatusLastError(proto.Message): + r"""Contains details of the last failed operation. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + errors (google.cloud.compute_v1.types.HaControllerStatusZoneStatusLastErrorErrors): + Output only. [Output Only] Encountered errors. + + This field is a member of `oneof`_ ``_errors``. + timestamp (str): + Output only. [Output Only] Show timestamp only if there is + an error.RFC3339 text format. + + This field is a member of `oneof`_ ``_timestamp``. + """ + + errors: "HaControllerStatusZoneStatusLastErrorErrors" = proto.Field( + proto.MESSAGE, + number=315977579, + optional=True, + message="HaControllerStatusZoneStatusLastErrorErrors", + ) + timestamp: str = proto.Field( + proto.STRING, + number=55126294, + optional=True, + ) + + +class HaControllerStatusZoneStatusLastErrorErrors(proto.Message): + r"""Output only. [Output Only] Encountered errors. + + Attributes: + errors (MutableSequence[google.cloud.compute_v1.types.Errors]): + [Output Only] The array of errors encountered while + processing this operation. + """ + + errors: MutableSequence["Errors"] = proto.RepeatedField( + proto.MESSAGE, + number=315977579, + message="Errors", + ) + + +class HaControllerZoneConfiguration(proto.Message): + r"""Config for a zone that the HaController may use for running + the VM instance. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + node_affinities (MutableSequence[google.cloud.compute_v1.types.HaControllerZoneConfigurationNodeAffinity]): + A set of node affinity configurations. Refer + toConfiguring node affinity for more + information. Overrides reservationAffinity. + reservation_affinity (google.cloud.compute_v1.types.HaControllerZoneConfigurationReservationAffinity): + Specifies the reservations that the instance + can consume from. + + This field is a member of `oneof`_ ``_reservation_affinity``. + """ + + node_affinities: MutableSequence["HaControllerZoneConfigurationNodeAffinity"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=461799971, + message="HaControllerZoneConfigurationNodeAffinity", + ) + ) + reservation_affinity: "HaControllerZoneConfigurationReservationAffinity" = ( + proto.Field( + proto.MESSAGE, + number=157850683, + optional=True, + message="HaControllerZoneConfigurationReservationAffinity", + ) + ) + + +class HaControllerZoneConfigurationNodeAffinity(proto.Message): + r"""Node Affinity: the configuration of desired nodes onto which + the Instance could be scheduled. + This message should be an exact copy of the Instances + representation of NodeAffinity. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + key (str): + Corresponds to the label key of Node + resource. + + This field is a member of `oneof`_ ``_key``. + operator (str): + Defines the operation of node selection. Valid operators + areIN for affinity and NOT_IN for anti-affinity. Check the + Operator enum for the list of possible values. + + This field is a member of `oneof`_ ``_operator``. + values (MutableSequence[str]): + Corresponds to the label values of Node + resource. + """ + + class Operator(proto.Enum): + r"""Defines the operation of node selection. Valid operators areIN for + affinity and NOT_IN for anti-affinity. + + Values: + UNDEFINED_OPERATOR (0): + A value indicating that the enum field is not + set. + IN (2341): + Requires Compute Engine to seek for matched + nodes. + NOT_IN (161144369): + Requires Compute Engine to avoid certain + nodes. + OPERATOR_UNSPECIFIED (128892924): + No description available. + """ + + UNDEFINED_OPERATOR = 0 + IN = 2341 + NOT_IN = 161144369 + OPERATOR_UNSPECIFIED = 128892924 + + key: str = proto.Field( + proto.STRING, + number=106079, + optional=True, + ) + operator: str = proto.Field( + proto.STRING, + number=36317348, + optional=True, + ) + values: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=249928994, + ) + + +class HaControllerZoneConfigurationReservationAffinity(proto.Message): + r"""Specifies the reservations that this instance can consume + from. This message should be an exact copy of the Instances + representation of AllocationAffinity. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + consume_reservation_type (str): + Specifies the type of reservation from which this instance + can consume resources: ANY_RESERVATION + (default),SPECIFIC_RESERVATION, or NO_RESERVATION. See + Consuming reserved instances for examples. Check the + ConsumeReservationType enum for the list of possible values. + + This field is a member of `oneof`_ ``_consume_reservation_type``. + key (str): + Corresponds to the label key of a reservation resource. To + target aSPECIFIC_RESERVATION by name, + specifygoogleapis.com/reservation-name as the key and + specify the name of your reservation as its value. + + This field is a member of `oneof`_ ``_key``. + values (MutableSequence[str]): + Corresponds to the label values of a + reservation resource. This can be either a name + to a reservation in the same project or + "projects/different-project/reservations/some-reservation-name" + to target a shared reservation in the same zone + but in a different project. + """ + + class ConsumeReservationType(proto.Enum): + r"""Specifies the type of reservation from which this instance can + consume resources: ANY_RESERVATION (default),SPECIFIC_RESERVATION, + or NO_RESERVATION. See Consuming reserved instances for examples. + + Values: + UNDEFINED_CONSUME_RESERVATION_TYPE (0): + A value indicating that the enum field is not + set. + ANY_RESERVATION (200008121): + Consume any allocation available. + ANY_RESERVATION_THEN_FAIL (236541178): + Consume any reservation available, but fail + if no reservation is available. Will not consume + from the on-demand pool. + NO_RESERVATION (169322030): + Do not consume from any allocated capacity. + SPECIFIC_RESERVATION (229889055): + Must consume from a specific reservation. + Must specify key value fields for specifying the + reservations. + SPECIFIC_THEN_ANY_RESERVATION (37025924): + Prefer to consume from a specific + reservation, but still consume any reservation + available if the specified reservation is not + available or exhausted. Must specify key value + fields for specifying the reservations. + SPECIFIC_THEN_NO_RESERVATION (406522371): + Prefer to consume from a specific + reservation, but still consume from the + on-demand pool if the specified reservation is + exhausted. Must specify key value fields for + specifying the reservations. + UNSPECIFIED (526786327): + No description available. + """ + + UNDEFINED_CONSUME_RESERVATION_TYPE = 0 + ANY_RESERVATION = 200008121 + ANY_RESERVATION_THEN_FAIL = 236541178 + NO_RESERVATION = 169322030 + SPECIFIC_RESERVATION = 229889055 + SPECIFIC_THEN_ANY_RESERVATION = 37025924 + SPECIFIC_THEN_NO_RESERVATION = 406522371 + UNSPECIFIED = 526786327 + + consume_reservation_type: str = proto.Field( + proto.STRING, + number=300736944, + optional=True, + ) + key: str = proto.Field( + proto.STRING, + number=106079, + optional=True, + ) + values: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=249928994, + ) + + +class HaControllersAggregatedList(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + etag (str): + + This field is a member of `oneof`_ ``_etag``. id (str): [Output Only] Unique identifier for the resource; defined by the server. This field is a member of `oneof`_ ``_id``. - items (MutableMapping[str, google.cloud.compute_v1.types.HealthAggregationPoliciesScopedList]): - A list of HealthAggregationPoliciesScopedList - resources. + items (MutableMapping[str, google.cloud.compute_v1.types.HaControllersScopedList]): + A list of HaControllersScopedList resources. kind (str): - Output only. Type of resource. + Output only. [Output Only] Type of resource. + Alwayscompute#haControllersAggregatedList for lists of + HaControllers. + + 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. + warning (google.cloud.compute_v1.types.Warning): + [Output Only] Informational warning message. + + This field is a member of `oneof`_ ``_warning``. + """ + + @property + def raw_page(self): + return self + + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) + id: str = proto.Field( + proto.STRING, + number=3355, + optional=True, + ) + items: MutableMapping[str, "HaControllersScopedList"] = proto.MapField( + proto.STRING, + proto.MESSAGE, + number=100526016, + message="HaControllersScopedList", + ) + 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 HaControllersFailoverRequest(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + failover_to_zone (str): + Name of the destination zone for the + failover. + + This field is a member of `oneof`_ ``_failover_to_zone``. + """ + + failover_to_zone: str = proto.Field( + proto.STRING, + number=371494051, + optional=True, + ) + + +class HaControllersList(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): + Unique identifier for the resource; defined + by the server. + + This field is a member of `oneof`_ ``_id``. + items (MutableSequence[google.cloud.compute_v1.types.HaController]): + A list of HaControllers in the specified + project and region. + next_page_token (str): + This token allows you to get the next page of + results formaxResults, 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. + warning (google.cloud.compute_v1.types.Warning): + 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["HaController"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="HaController", + ) + 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 HaControllersScopedList(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + ha_controllers (MutableSequence[google.cloud.compute_v1.types.HaController]): + List of HaControllers contained in this + scope. + warning (google.cloud.compute_v1.types.Warning): + Informational warning which replaces the list + of backend services when the list is empty. + + This field is a member of `oneof`_ ``_warning``. + """ + + ha_controllers: MutableSequence["HaController"] = proto.RepeatedField( + proto.MESSAGE, + number=377081361, + message="HaController", + ) + warning: "Warning" = proto.Field( + proto.MESSAGE, + number=50704284, + optional=True, + message="Warning", + ) + + +class HealthAggregationPoliciesScopedList(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + health_aggregation_policies (MutableSequence[google.cloud.compute_v1.types.HealthAggregationPolicy]): + A list of HealthAggregationPolicys contained + in this scope. + warning (google.cloud.compute_v1.types.Warning): + Informational warning which replaces the list + of health aggregation policies when the list is + empty. + + This field is a member of `oneof`_ ``_warning``. + """ + + health_aggregation_policies: MutableSequence["HealthAggregationPolicy"] = ( + proto.RepeatedField( + proto.MESSAGE, + number=87589904, + message="HealthAggregationPolicy", + ) + ) + warning: "Warning" = proto.Field( + proto.MESSAGE, + number=50704284, + optional=True, + message="Warning", + ) + + +class HealthAggregationPolicy(proto.Message): + r"""Represents a health aggregation policy. + + A health aggregation policy resource defines a policy to + aggregate health. + + For more information, see + Health checks overview. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + creation_timestamp (str): + Output only. [Output Only] Creation timestamp inRFC3339 text + format. + + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + An optional description of this resource. + Provide this property when you create the + resource. + + This field is a member of `oneof`_ ``_description``. + fingerprint (str): + Fingerprint of this resource. A hash of the + contents stored in this object. This field is + used in optimistic locking. This field will be + ignored when inserting a + HealthAggregationPolicy. An up-to-date + fingerprint must be provided in order to patch + the HealthAggregationPolicy; Otherwise, the + request will fail with error 412 + conditionNotMet. To see the latest fingerprint, + make a get() request to retrieve the + HealthAggregationPolicy. + + This field is a member of `oneof`_ ``_fingerprint``. + healthy_percent_threshold (int): + Can only be set if the policyType field + isBACKEND_SERVICE_POLICY. Specifies the threshold (as a + percentage) of healthy endpoints required in order to + consider the aggregated health result HEALTHY. Defaults to + 60. Must be in range [0, 100]. Not applicable if the + policyType field isDNB_PUBLIC_IP_POLICY. Can be mutated. + This field is optional, and will be set to the default if + unspecified. Note that both this threshold and + minHealthyThreshold must be satisfied in order for HEALTHY + to be the aggregated result. "Endpoints" refers to network + endpoints within a Network Endpoint Group or instances + within an Instance Group. + + This field is a member of `oneof`_ ``_healthy_percent_threshold``. + 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#healthAggregationPolicy for health aggregation + policies. + + This field is a member of `oneof`_ ``_kind``. + min_healthy_threshold (int): + Can only be set if the policyType field + isBACKEND_SERVICE_POLICY. Specifies the minimum number of + healthy endpoints required in order to consider the + aggregated health result HEALTHY. Defaults to 1. Must be + positive. Not applicable if the policyType field + isDNB_PUBLIC_IP_POLICY. Can be mutated. This field is + optional, and will be set to the default if unspecified. + Note that both this threshold and healthyPercentThreshold + must be satisfied in order for HEALTHY to be the aggregated + result. "Endpoints" refers to network endpoints within a + Network Endpoint Group or instances within an Instance + Group. + + This field is a member of `oneof`_ ``_min_healthy_threshold``. + name (str): + Name of the resource. Provided by the client when the + resource is created. The name must be 1-63 characters long, + and comply 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``. + policy_type (str): + Specifies the type of the healthAggregationPolicy. The only + allowed value for global resources is DNS_PUBLIC_IP_POLICY. + The only allowed value for regional resources is + BACKEND_SERVICE_POLICY. Must be specified when the + healthAggregationPolicy is created, and cannot be mutated. + Check the PolicyType enum for the list of possible values. + + This field is a member of `oneof`_ ``_policy_type``. + region (str): + Output only. [Output Only] URL of the region where the + health aggregation policy resides. This field applies only + to the regional resource. You must specify this field as + part of the HTTP request URL. It is not settable as a field + in the request body. + + This field is a member of `oneof`_ ``_region``. + self_link (str): + Output only. [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 with id for + the resource. + + This field is a member of `oneof`_ ``_self_link_with_id``. + """ + + class PolicyType(proto.Enum): + r"""Specifies the type of the healthAggregationPolicy. The only allowed + value for global resources is DNS_PUBLIC_IP_POLICY. The only allowed + value for regional resources is BACKEND_SERVICE_POLICY. Must be + specified when the healthAggregationPolicy is created, and cannot be + mutated. + + Values: + UNDEFINED_POLICY_TYPE (0): + A value indicating that the enum field is not + set. + BACKEND_SERVICE_POLICY (415582023): + No description available. + DNS_PUBLIC_IP_POLICY (366354794): + No description available. + """ + + UNDEFINED_POLICY_TYPE = 0 + BACKEND_SERVICE_POLICY = 415582023 + DNS_PUBLIC_IP_POLICY = 366354794 + + creation_timestamp: str = proto.Field( + proto.STRING, + number=30525366, + optional=True, + ) + description: str = proto.Field( + proto.STRING, + number=422937596, + optional=True, + ) + fingerprint: str = proto.Field( + proto.STRING, + number=234678500, + optional=True, + ) + healthy_percent_threshold: int = proto.Field( + proto.UINT32, + number=72242895, + optional=True, + ) + id: int = proto.Field( + proto.UINT64, + number=3355, + optional=True, + ) + kind: str = proto.Field( + proto.STRING, + number=3292052, + optional=True, + ) + min_healthy_threshold: int = proto.Field( + proto.UINT32, + number=132310940, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + policy_type: str = proto.Field( + proto.STRING, + number=18158119, + optional=True, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + optional=True, + ) + self_link: str = proto.Field( + proto.STRING, + number=456214797, + optional=True, + ) + self_link_with_id: str = proto.Field( + proto.STRING, + number=44520962, + optional=True, + ) + + +class HealthAggregationPolicyAggregatedList(proto.Message): + r"""Contains a list of HealthAggregationPoliciesScopedList. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + id (str): + [Output Only] Unique identifier for the resource; defined by + the server. + + This field is a member of `oneof`_ ``_id``. + items (MutableMapping[str, google.cloud.compute_v1.types.HealthAggregationPoliciesScopedList]): + A list of HealthAggregationPoliciesScopedList + resources. + kind (str): + Output only. Type of resource. This field is a member of `oneof`_ ``_kind``. next_page_token (str): @@ -56772,6 +58200,108 @@ class ImageParams(proto.Message): ) +class ImageView(proto.Message): + r"""Represents a read-only view of a global Image resource. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + image (google.cloud.compute_v1.types.Image): + The Image resource. + + This field is a member of `oneof`_ ``_image``. + """ + + image: "Image" = proto.Field( + proto.MESSAGE, + number=100313435, + optional=True, + message="Image", + ) + + +class ImageViewsListResponse(proto.Message): + r"""Response message for ImageViewsService.List + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + etag (str): + Etag of the resource. + + This field is a member of `oneof`_ ``_etag``. + id (str): + [Output Only] Unique identifier for the resource; defined by + the server. + + This field is a member of `oneof`_ ``_id``. + items (MutableSequence[google.cloud.compute_v1.types.ImageView]): + A list of Image resources. + kind (str): + + This field is a member of `oneof`_ ``_kind``. + next_page_token (str): + + 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. + warning (google.cloud.compute_v1.types.Warning): + [Output Only] Informational warning message. + + This field is a member of `oneof`_ ``_warning``. + """ + + @property + def raw_page(self): + return self + + etag: str = proto.Field( + proto.STRING, + number=3123477, + optional=True, + ) + id: str = proto.Field( + proto.STRING, + number=3355, + optional=True, + ) + items: MutableSequence["ImageView"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="ImageView", + ) + 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 InitialStateConfig(proto.Message): r"""Initial State for shielded instance, these are public keys which are safe to store in public @@ -56815,6 +58345,67 @@ class InitialStateConfig(proto.Message): ) +class InsertAcceleratorInterconnectRequest(proto.Message): + r"""A request message for AcceleratorInterconnects.Insert. See + the method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + accelerator_interconnects_insert_request_resource (google.cloud.compute_v1.types.AcceleratorInterconnectsInsertRequest): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + zone (str): + The name of the zone + where you want to create the accelerator + interconnect. Zone name should conform to + RFC1035. + """ + + accelerator_interconnects_insert_request_resource: "AcceleratorInterconnectsInsertRequest" = proto.Field( + proto.MESSAGE, + number=159033622, + message="AcceleratorInterconnectsInsertRequest", + ) + 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 InsertAddressRequest(proto.Message): r"""A request message for Addresses.Insert. See the method description for details. @@ -57701,6 +59292,50 @@ class InsertGlobalVmExtensionPolicyRequest(proto.Message): ) +class InsertHaControllerRequest(proto.Message): + r"""A request message for HaControllers.Insert. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + ha_controller_resource (google.cloud.compute_v1.types.HaController): + 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. + + This field is a member of `oneof`_ ``_request_id``. + """ + + ha_controller_resource: "HaController" = proto.Field( + proto.MESSAGE, + number=229262603, + message="HaController", + ) + 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 InsertHealthCheckRequest(proto.Message): r"""A request message for HealthChecks.Insert. See the method description for details. @@ -64281,9 +65916,18 @@ class InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection(proto.Messa .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + disks (MutableSequence[google.cloud.compute_v1.types.AttachedDisk]): + List of disks to be attached to the instances + created from this selection. machine_types (MutableSequence[str]): Full machine-type names, e.g. "n1-standard-16". + min_cpu_platform (str): + Name of the minimum CPU platform to be used + by this instance selection. e.g. 'Intel Ice + Lake'. + + This field is a member of `oneof`_ ``_min_cpu_platform``. rank (int): Preference of this instance selection. Lower number means higher preference. MIG will first @@ -64296,10 +65940,20 @@ class InstanceGroupManagerInstanceFlexibilityPolicyInstanceSelection(proto.Messa This field is a member of `oneof`_ ``_rank``. """ + disks: MutableSequence["AttachedDisk"] = proto.RepeatedField( + proto.MESSAGE, + number=95594102, + message="AttachedDisk", + ) machine_types: MutableSequence[str] = proto.RepeatedField( proto.STRING, number=79720065, ) + min_cpu_platform: str = proto.Field( + proto.STRING, + number=242912759, + optional=True, + ) rank: int = proto.Field( proto.INT32, number=3492908, @@ -68722,6 +70376,26 @@ class InstancesStartWithEncryptionKeyRequest(proto.Message): ) +class InstancesTroubleshootOperationMetadata(proto.Message): + r"""[Output Only] Operation metadata for instances.troubleshoot. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + troubleshoot_output (str): + Output only. [Output Only] Serialized output of the + troubleshooting diagnostic run. + + This field is a member of `oneof`_ ``_troubleshoot_output``. + """ + + troubleshoot_output: str = proto.Field( + proto.STRING, + number=327251096, + optional=True, + ) + + class InstantSnapshot(proto.Message): r"""Represents a InstantSnapshot resource. @@ -76247,6 +77921,38 @@ class InterconnectsGetMacsecConfigResponse(proto.Message): ) +class InterconnectsSetNameRequest(proto.Message): + r"""Request to rename an interconnect. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + current_name (str): + The current name of the interconnect. + The name must be 1-63 characters long, and + comply with RFC1035. + + This field is a member of `oneof`_ ``_current_name``. + name (str): + The new name of the interconnect. + The name must be 1-63 characters long, and + comply with RFC1035. + + This field is a member of `oneof`_ ``_name``. + """ + + current_name: str = proto.Field( + proto.STRING, + number=394983825, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + + class Interval(proto.Message): r"""Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). @@ -77042,14 +78748,19 @@ def raw_page(self): ) -class ListAcceleratorTypesRequest(proto.Message): - r"""A request message for AcceleratorTypes.List. See the method +class ListAcceleratorInterconnectMemberInstancesRequest(proto.Message): + r"""A request message for + AcceleratorInterconnectMemberInstances.List. See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + accelerator_interconnect (str): + Name of the parent AcceleratorInterconnect. + The name should conform to RFC1035 or be a + resource ID. filter (str): A filter expression that filters resources listed in the response. Most Compute resources support two types of filter @@ -77154,22 +78865,16 @@ class ListAcceleratorTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Project ID for the request. zone (str): - The name of the zone for this request. + Zone where the AcceleratorInterconnect is + located. Zone name should conform to RFC1035. """ + accelerator_interconnect: str = proto.Field( + proto.STRING, + number=313143778, + ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -77194,20 +78899,15 @@ class ListAcceleratorTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, ) -class ListAddressesRequest(proto.Message): - r"""A request message for Addresses.List. See the method - description for details. +class ListAcceleratorInterconnectsRequest(proto.Message): + r"""A request message for AcceleratorInterconnects.List. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -77318,19 +79018,157 @@ class ListAddressesRequest(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. + zone (str): + The name of thezone where the + accelerator interconnect is located. Zone name + should conform to RFC1035. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, + optional=True, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, + optional=True, + ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, + optional=True, + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + + +class ListAcceleratorTypesRequest(proto.Message): + r"""A request message for AcceleratorTypes.List. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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) - 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. + 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`_ ``_return_partial_success``. + 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. + zone (str): + The name of the zone for this request. """ filter: str = proto.Field( @@ -77357,15 +79195,157 @@ class ListAddressesRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( + zone: str = proto.Field( proto.STRING, - number=138946292, + number=3744684, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + + +class ListAddressesRequest(proto.Message): + r"""A request message for Addresses.List. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, + optional=True, + ) + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( + proto.STRING, + number=160562920, + optional=True, + ) + page_token: str = proto.Field( + proto.STRING, + number=19994697, optional=True, ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) class ListAssociationsFirewallPolicyRequest(proto.Message): @@ -77539,17 +79519,6 @@ class ListAutoscalersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. """ @@ -77578,11 +79547,6 @@ class ListAutoscalersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -77705,17 +79669,6 @@ class ListAvailableFeaturesRegionSslPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -77746,11 +79699,6 @@ class ListAvailableFeaturesRegionSslPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListAvailableFeaturesSslPoliciesRequest(proto.Message): @@ -77866,19 +79814,517 @@ class ListAvailableFeaturesSslPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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. + """ + + 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, + ) + + +class ListBackendBucketsRequest(proto.Message): + r"""A request message for BackendBuckets.List. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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. + """ + + 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, + ) + + +class ListBackendServicesRequest(proto.Message): + r"""A request message for BackendServices.List. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + filter (str): + A filter expression that filters resources listed in the + response. Most Compute resources support two types of filter + expressions: expressions that support regular expressions + and expressions that follow API improvement proposal + AIP-160. 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. + """ + + 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, + ) + + +class ListBgpRoutesRoutersRequest(proto.Message): + r"""A request message for Routers.ListBgpRoutes. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + address_family (str): + (Required) limit results to this address + family (either IPv4 or IPv6) Check the + AddressFamily enum for the list of possible + values. + + This field is a member of `oneof`_ ``_address_family``. + destination_prefix (str): + Limit results to destinations that are + subnets of this CIDR range + + This field is a member of `oneof`_ ``_destination_prefix``. + 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``. + peer (str): + (Required) limit results to the BGP peer with + the given name. Name should conform to RFC1035. + + This field is a member of `oneof`_ ``_peer``. + policy_applied (bool): + When true, the method returns post-policy + routes. Otherwise, it returns pre-policy routes. + + This field is a member of `oneof`_ ``_policy_applied``. + project (str): + Project ID for this request. + region (str): + Name of the region for this request. + route_type (str): + (Required) limit results to this type of + route (either LEARNED or ADVERTISED) + Check the RouteType enum for the list of + possible values. - This field is a member of `oneof`_ ``_return_partial_success``. + This field is a member of `oneof`_ ``_route_type``. + router (str): + Name or id of the resource for this request. + Name should conform to RFC1035. """ + class AddressFamily(proto.Enum): + r"""(Required) limit results to this address family (either IPv4 + or IPv6) + + Values: + UNDEFINED_ADDRESS_FAMILY (0): + A value indicating that the enum field is not + set. + IPV4 (2254341): + No description available. + IPV6 (2254343): + No description available. + UNSPECIFIED_IP_VERSION (72938440): + No description available. + """ + + UNDEFINED_ADDRESS_FAMILY = 0 + IPV4 = 2254341 + IPV6 = 2254343 + UNSPECIFIED_IP_VERSION = 72938440 + + class RouteType(proto.Enum): + r"""(Required) limit results to this type of route (either + LEARNED or ADVERTISED) + + Values: + UNDEFINED_ROUTE_TYPE (0): + A value indicating that the enum field is not + set. + ADVERTISED (20302109): + No description available. + LEARNED (231892419): + No description available. + UNSPECIFIED_ROUTE_TYPE (248064440): + No description available. + """ + + UNDEFINED_ROUTE_TYPE = 0 + ADVERTISED = 20302109 + LEARNED = 231892419 + UNSPECIFIED_ROUTE_TYPE = 248064440 + + address_family: str = proto.Field( + proto.STRING, + number=173744655, + optional=True, + ) + destination_prefix: str = proto.Field( + proto.STRING, + number=263872483, + optional=True, + ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -77899,19 +80345,37 @@ class ListAvailableFeaturesSslPoliciesRequest(proto.Message): number=19994697, optional=True, ) + peer: str = proto.Field( + proto.STRING, + number=3436898, + optional=True, + ) + policy_applied: bool = proto.Field( + proto.BOOL, + number=379464304, + optional=True, + ) project: str = proto.Field( proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + route_type: str = proto.Field( + proto.STRING, + number=375888752, optional=True, ) + router: str = proto.Field( + proto.STRING, + number=148608841, + ) -class ListBackendBucketsRequest(proto.Message): - r"""A request message for BackendBuckets.List. See the method +class ListCrossSiteNetworksRequest(proto.Message): + r"""A request message for CrossSiteNetworks.List. See the method description for details. @@ -78023,17 +80487,6 @@ class ListBackendBucketsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -78060,15 +80513,10 @@ class ListBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListBackendServicesRequest(proto.Message): - r"""A request message for BackendServices.List. See the method +class ListDiskTypesRequest(proto.Message): + r"""A request message for DiskTypes.List. See the method description for details. @@ -78180,17 +80628,8 @@ class ListBackendServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + zone (str): + The name of the zone for this request. """ filter: str = proto.Field( @@ -78217,33 +80656,20 @@ class ListBackendServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + zone: str = proto.Field( + proto.STRING, + number=3744684, ) -class ListBgpRoutesRoutersRequest(proto.Message): - r"""A request message for Routers.ListBgpRoutes. See the method - description for details. +class ListDisksRequest(proto.Message): + r"""A request message for Disks.List. See the method description + for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - address_family (str): - (Required) limit results to this address - family (either IPv4 or IPv6) Check the - AddressFamily enum for the list of possible - values. - - This field is a member of `oneof`_ ``_address_family``. - destination_prefix (str): - Limit results to destinations that are - subnets of this CIDR range - - This field is a member of `oneof`_ ``_destination_prefix``. filter (str): A filter expression that filters resources listed in the response. Most Compute resources support two types of filter @@ -78347,95 +80773,12 @@ class ListBgpRoutesRoutersRequest(proto.Message): the next page of results. This field is a member of `oneof`_ ``_page_token``. - peer (str): - (Required) limit results to the BGP peer with - the given name. Name should conform to RFC1035. - - This field is a member of `oneof`_ ``_peer``. - policy_applied (bool): - When true, the method returns post-policy - routes. Otherwise, it returns pre-policy routes. - - This field is a member of `oneof`_ ``_policy_applied``. 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``. - route_type (str): - (Required) limit results to this type of - route (either LEARNED or ADVERTISED) - Check the RouteType enum for the list of - possible values. - - This field is a member of `oneof`_ ``_route_type``. - router (str): - Name or id of the resource for this request. - Name should conform to RFC1035. + zone (str): + The name of the zone for this request. """ - class AddressFamily(proto.Enum): - r"""(Required) limit results to this address family (either IPv4 - or IPv6) - - Values: - UNDEFINED_ADDRESS_FAMILY (0): - A value indicating that the enum field is not - set. - IPV4 (2254341): - No description available. - IPV6 (2254343): - No description available. - UNSPECIFIED_IP_VERSION (72938440): - No description available. - """ - - UNDEFINED_ADDRESS_FAMILY = 0 - IPV4 = 2254341 - IPV6 = 2254343 - UNSPECIFIED_IP_VERSION = 72938440 - - class RouteType(proto.Enum): - r"""(Required) limit results to this type of route (either - LEARNED or ADVERTISED) - - Values: - UNDEFINED_ROUTE_TYPE (0): - A value indicating that the enum field is not - set. - ADVERTISED (20302109): - No description available. - LEARNED (231892419): - No description available. - UNSPECIFIED_ROUTE_TYPE (248064440): - No description available. - """ - - UNDEFINED_ROUTE_TYPE = 0 - ADVERTISED = 20302109 - LEARNED = 231892419 - UNSPECIFIED_ROUTE_TYPE = 248064440 - - address_family: str = proto.Field( - proto.STRING, - number=173744655, - optional=True, - ) - destination_prefix: str = proto.Field( - proto.STRING, - number=263872483, - optional=True, - ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -78456,42 +80799,18 @@ class RouteType(proto.Enum): number=19994697, optional=True, ) - peer: str = proto.Field( - proto.STRING, - number=3436898, - optional=True, - ) - policy_applied: bool = proto.Field( - proto.BOOL, - number=379464304, - 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, - ) - route_type: str = proto.Field( - proto.STRING, - number=375888752, - optional=True, - ) - router: str = proto.Field( + zone: str = proto.Field( proto.STRING, - number=148608841, + number=3744684, ) -class ListCrossSiteNetworksRequest(proto.Message): - r"""A request message for CrossSiteNetworks.List. See the method +class ListDisksStoragePoolsRequest(proto.Message): + r"""A request message for StoragePools.ListDisks. See the method description for details. @@ -78603,17 +80922,10 @@ class ListCrossSiteNetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + storage_pool (str): + Name of the storage pool to list disks of. + zone (str): + The name of the zone for this request. """ filter: str = proto.Field( @@ -78640,16 +80952,19 @@ class ListCrossSiteNetworksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + storage_pool: str = proto.Field( + proto.STRING, + number=360473440, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, ) -class ListDiskTypesRequest(proto.Message): - r"""A request message for DiskTypes.List. See the method - description for details. +class ListErrorsInstanceGroupManagersRequest(proto.Message): + r"""A request message for InstanceGroupManagers.ListErrors. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -78726,6 +81041,11 @@ class ListDiskTypesRequest(proto.Message): regular expressions. This field is a member of `oneof`_ ``_filter``. + instance_group_manager (str): + The name of the managed instance group. It must be a string + that meets the requirements in RFC1035, or an unsigned long + integer: must match regexp pattern: + (?:`a-z `__?)|1-9{0,19}. max_results (int): The maximum number of results per page that should be returned. If the number of available results is larger than @@ -78760,19 +81080,10 @@ class ListDiskTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): - The name of the zone for this request. + The name of thezone where the managed + instance group is located. + It should conform to RFC1035. """ filter: str = proto.Field( @@ -78780,6 +81091,10 @@ class ListDiskTypesRequest(proto.Message): number=336120696, optional=True, ) + instance_group_manager: str = proto.Field( + proto.STRING, + number=249363395, + ) max_results: int = proto.Field( proto.UINT32, number=54715419, @@ -78799,20 +81114,15 @@ class ListDiskTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, ) -class ListDisksRequest(proto.Message): - r"""A request message for Disks.List. See the method description - for details. +class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): + r"""A request message for RegionInstanceGroupManagers.ListErrors. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -78889,6 +81199,11 @@ class ListDisksRequest(proto.Message): regular expressions. This field is a member of `oneof`_ ``_filter``. + instance_group_manager (str): + The name of the managed instance group. It must be a string + that meets the requirements in RFC1035, or an unsigned long + integer: must match regexp pattern: + (?:`a-z `__?)|1-9{0,19}. max_results (int): The maximum number of results per page that should be returned. If the number of available results is larger than @@ -78923,19 +81238,9 @@ class ListDisksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - The name of the zone for this request. + region (str): + Name of the region scoping this request. + This should conform to RFC1035. """ filter: str = proto.Field( @@ -78943,6 +81248,10 @@ class ListDisksRequest(proto.Message): number=336120696, optional=True, ) + instance_group_manager: str = proto.Field( + proto.STRING, + number=249363395, + ) max_results: int = proto.Field( proto.UINT32, number=54715419, @@ -78962,20 +81271,15 @@ class ListDisksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( + region: str = proto.Field( proto.STRING, - number=3744684, + number=138946292, ) -class ListDisksStoragePoolsRequest(proto.Message): - r"""A request message for StoragePools.ListDisks. See the method - description for details. +class ListExternalVpnGatewaysRequest(proto.Message): + r"""A request message for ExternalVpnGateways.List. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79086,21 +81390,6 @@ class ListDisksStoragePoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - storage_pool (str): - Name of the storage pool to list disks of. - zone (str): - The name of the zone for this request. """ filter: str = proto.Field( @@ -79127,24 +81416,11 @@ class ListDisksStoragePoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - storage_pool: str = proto.Field( - proto.STRING, - number=360473440, - ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListErrorsInstanceGroupManagersRequest(proto.Message): - r"""A request message for InstanceGroupManagers.ListErrors. See - the method description for details. +class ListFirewallPoliciesRequest(proto.Message): + r"""A request message for FirewallPolicies.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79221,11 +81497,6 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): regular expressions. This field is a member of `oneof`_ ``_filter``. - instance_group_manager (str): - The name of the managed instance group. It must be a string - that meets the requirements in RFC1035, or an unsigned long - integer: must match regexp pattern: - (?:`a-z `__?)|1-9{0,19}. max_results (int): The maximum number of results per page that should be returned. If the number of available results is larger than @@ -79258,23 +81529,13 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): the next page of results. This field is a member of `oneof`_ ``_page_token``. - project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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. + parent_id (str): + Parent ID for this request. The ID can be either be + "folders/[FOLDER_ID]" if the parent is a folder or + "organizations/[ORGANIZATION_ID]" if the parent is an + organization. - This field is a member of `oneof`_ ``_return_partial_success``. - zone (str): - The name of thezone where the managed - instance group is located. - It should conform to RFC1035. + This field is a member of `oneof`_ ``_parent_id``. """ filter: str = proto.Field( @@ -79282,10 +81543,6 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): number=336120696, optional=True, ) - instance_group_manager: str = proto.Field( - proto.STRING, - number=249363395, - ) max_results: int = proto.Field( proto.UINT32, number=54715419, @@ -79301,24 +81558,16 @@ class ListErrorsInstanceGroupManagersRequest(proto.Message): number=19994697, optional=True, ) - project: str = proto.Field( + parent_id: str = proto.Field( proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + number=459714768, optional=True, ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): - r"""A request message for RegionInstanceGroupManagers.ListErrors. - See the method description for details. +class ListFirewallsRequest(proto.Message): + r"""A request message for Firewalls.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79395,11 +81644,6 @@ class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): regular expressions. This field is a member of `oneof`_ ``_filter``. - instance_group_manager (str): - The name of the managed instance group. It must be a string - that meets the requirements in RFC1035, or an unsigned long - integer: must match regexp pattern: - (?:`a-z `__?)|1-9{0,19}. max_results (int): The maximum number of results per page that should be returned. If the number of available results is larger than @@ -79434,20 +81678,6 @@ class ListErrorsRegionInstanceGroupManagersRequest(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. - This should conform to RFC1035. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -79455,10 +81685,6 @@ class ListErrorsRegionInstanceGroupManagersRequest(proto.Message): number=336120696, optional=True, ) - instance_group_manager: str = proto.Field( - proto.STRING, - number=249363395, - ) max_results: int = proto.Field( proto.UINT32, number=54715419, @@ -79478,20 +81704,11 @@ class ListErrorsRegionInstanceGroupManagersRequest(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, - ) -class ListExternalVpnGatewaysRequest(proto.Message): - r"""A request message for ExternalVpnGateways.List. See the - method description for details. +class ListForwardingRulesRequest(proto.Message): + r"""A request message for ForwardingRules.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -79602,17 +81819,8 @@ class ListExternalVpnGatewaysRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + region (str): + Name of the region scoping this request. """ filter: str = proto.Field( @@ -79639,15 +81847,14 @@ class ListExternalVpnGatewaysRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + region: str = proto.Field( + proto.STRING, + number=138946292, ) -class ListFirewallPoliciesRequest(proto.Message): - r"""A request message for FirewallPolicies.List. See the method +class ListFutureReservationsRequest(proto.Message): + r"""A request message for FutureReservations.List. See the method description for details. @@ -79757,24 +81964,11 @@ class ListFirewallPoliciesRequest(proto.Message): the next page of results. This field is a member of `oneof`_ ``_page_token``. - parent_id (str): - Parent ID for this request. The ID can be either be - "folders/[FOLDER_ID]" if the parent is a folder or - "organizations/[ORGANIZATION_ID]" if the parent is an - organization. - - This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + project (str): + Project ID for this request. + zone (str): + Name of the zone for this request. Name + should conform to RFC1035. """ filter: str = proto.Field( @@ -79797,20 +81991,18 @@ class ListFirewallPoliciesRequest(proto.Message): number=19994697, optional=True, ) - parent_id: str = proto.Field( + project: str = proto.Field( proto.STRING, - number=459714768, - optional=True, + number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + zone: str = proto.Field( + proto.STRING, + number=3744684, ) -class ListFirewallsRequest(proto.Message): - r"""A request message for Firewalls.List. See the method +class ListGlobalAddressesRequest(proto.Message): + r"""A request message for GlobalAddresses.List. See the method description for details. @@ -79922,17 +82114,6 @@ class ListFirewallsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -79959,16 +82140,11 @@ class ListFirewallsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListForwardingRulesRequest(proto.Message): - r"""A request message for ForwardingRules.List. See the method - description for details. +class ListGlobalForwardingRulesRequest(proto.Message): + r"""A request message for GlobalForwardingRules.List. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80079,19 +82255,6 @@ class ListForwardingRulesRequest(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 - 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( @@ -80118,20 +82281,11 @@ class ListForwardingRulesRequest(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, - ) -class ListFutureReservationsRequest(proto.Message): - r"""A request message for FutureReservations.List. See the method - description for details. +class ListGlobalNetworkEndpointGroupsRequest(proto.Message): + r"""A request message for GlobalNetworkEndpointGroups.List. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80242,20 +82396,6 @@ class ListFutureReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - Name of the zone for this request. Name - should conform to RFC1035. """ filter: str = proto.Field( @@ -80282,19 +82422,10 @@ class ListFutureReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class ListGlobalAddressesRequest(proto.Message): - r"""A request message for GlobalAddresses.List. See the method +class ListGlobalOperationsRequest(proto.Message): + r"""A request message for GlobalOperations.List. See the method description for details. @@ -80406,17 +82537,6 @@ class ListGlobalAddressesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -80443,16 +82563,11 @@ class ListGlobalAddressesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListGlobalForwardingRulesRequest(proto.Message): - r"""A request message for GlobalForwardingRules.List. See the - method description for details. +class ListGlobalOrganizationOperationsRequest(proto.Message): + r"""A request message for GlobalOrganizationOperations.List. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80561,19 +82676,10 @@ class ListGlobalForwardingRulesRequest(proto.Message): the next page of results. This field is a member of `oneof`_ ``_page_token``. - project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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. + parent_id (str): + Parent ID for this request. - This field is a member of `oneof`_ ``_return_partial_success``. + This field is a member of `oneof`_ ``_parent_id``. """ filter: str = proto.Field( @@ -80596,19 +82702,15 @@ class ListGlobalForwardingRulesRequest(proto.Message): number=19994697, optional=True, ) - project: str = proto.Field( + parent_id: str = proto.Field( proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + number=459714768, optional=True, ) -class ListGlobalNetworkEndpointGroupsRequest(proto.Message): - r"""A request message for GlobalNetworkEndpointGroups.List. See +class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): + r"""A request message for GlobalPublicDelegatedPrefixes.List. See the method description for details. @@ -80720,17 +82822,6 @@ class ListGlobalNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -80757,16 +82848,11 @@ class ListGlobalNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListGlobalOperationsRequest(proto.Message): - r"""A request message for GlobalOperations.List. See the method - description for details. +class ListGlobalVmExtensionPoliciesRequest(proto.Message): + r"""A request message for GlobalVmExtensionPolicies.List. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -80877,17 +82963,6 @@ class ListGlobalOperationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -80914,176 +82989,11 @@ class ListGlobalOperationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - - -class ListGlobalOrganizationOperationsRequest(proto.Message): - r"""A request message for GlobalOrganizationOperations.List. See - the method description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - filter (str): - A filter expression that filters resources listed in the - response. Most Compute resources support two types of filter - expressions: expressions that support regular expressions - and expressions that follow API improvement proposal - AIP-160. 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``. - parent_id (str): - Parent ID for this request. - - This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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, - ) - order_by: str = proto.Field( - proto.STRING, - number=160562920, - optional=True, - ) - page_token: str = proto.Field( - proto.STRING, - number=19994697, - optional=True, - ) - parent_id: str = proto.Field( - proto.STRING, - number=459714768, - optional=True, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): - r"""A request message for GlobalPublicDelegatedPrefixes.List. See - the method description for details. +class ListHaControllersRequest(proto.Message): + r"""A request message for HaControllers.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -81194,17 +83104,8 @@ class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + region (str): + Name of the region for this request. """ filter: str = proto.Field( @@ -81231,16 +83132,15 @@ class ListGlobalPublicDelegatedPrefixesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + region: str = proto.Field( + proto.STRING, + number=138946292, ) -class ListGlobalVmExtensionPoliciesRequest(proto.Message): - r"""A request message for GlobalVmExtensionPolicies.List. See the - method description for details. +class ListHealthChecksRequest(proto.Message): + r"""A request message for HealthChecks.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -81351,17 +83251,6 @@ class ListGlobalVmExtensionPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -81388,21 +83277,24 @@ class ListGlobalVmExtensionPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListHealthChecksRequest(proto.Message): - r"""A request message for HealthChecks.List. See the method - description for details. +class ListHostsRequest(proto.Message): + r"""A request message for Hosts.List. See the method description + for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + association (str): + The parent resource association for the Host. This field + specifies the hierarchical context (e.g., reservation, + block, sub-block) when accessing the host. For example, + reservations/reservation_name, + reservations/reservation_name/reservationBlocks/reservation_block_name + or + reservations/reservation_name/reservationBlocks/reservation_block_name/reservationSubBlocks/reservation_sub_block_name. filter (str): A filter expression that filters resources listed in the response. Most Compute resources support two types of filter @@ -81507,20 +83399,16 @@ class ListHealthChecksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + The project ID for this request. + zone (str): + The name of the zone for this request, + formatted as RFC1035. """ + association: str = proto.Field( + proto.STRING, + number=449371265, + ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -81545,29 +83433,20 @@ class ListHealthChecksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + zone: str = proto.Field( + proto.STRING, + number=3744684, ) -class ListHostsRequest(proto.Message): - r"""A request message for Hosts.List. See the method description - for details. +class ListImageViewsRequest(proto.Message): + r"""A request message for ImageViews.List. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - association (str): - The parent resource association for the Host. This field - specifies the hierarchical context (e.g., reservation, - block, sub-block) when accessing the host. For example, - reservations/reservation_name, - reservations/reservation_name/reservationBlocks/reservation_block_name - or - reservations/reservation_name/reservationBlocks/reservation_block_name/reservationSubBlocks/reservation_sub_block_name. filter (str): A filter expression that filters resources listed in the response. Most Compute resources support two types of filter @@ -81672,27 +83551,12 @@ class ListHostsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): - The project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - The name of the zone for this request, - formatted as RFC1035. + Required. Project ID for this request. + region (str): + Required. Name of the region for this + request. """ - association: str = proto.Field( - proto.STRING, - number=449371265, - ) filter: str = proto.Field( proto.STRING, number=336120696, @@ -81717,14 +83581,9 @@ class ListHostsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( + region: str = proto.Field( proto.STRING, - number=3744684, + number=138946292, ) @@ -81841,17 +83700,6 @@ class ListImagesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -81878,11 +83726,6 @@ class ListImagesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInstanceGroupManagerResizeRequestsRequest(proto.Message): @@ -82002,17 +83845,6 @@ class ListInstanceGroupManagerResizeRequestsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. The name should @@ -82047,11 +83879,6 @@ class ListInstanceGroupManagerResizeRequestsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82171,17 +83998,6 @@ class ListInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. @@ -82211,11 +84027,6 @@ class ListInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82335,17 +84146,6 @@ class ListInstanceGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the instance group is located. @@ -82375,11 +84175,6 @@ class ListInstanceGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82499,17 +84294,6 @@ class ListInstanceTemplatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -82536,11 +84320,6 @@ class ListInstanceTemplatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInstancesInstanceGroupsRequest(proto.Message): @@ -82661,17 +84440,6 @@ class ListInstancesInstanceGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone where the instance group is located. @@ -82710,11 +84478,6 @@ class ListInstancesInstanceGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -82841,17 +84604,6 @@ class ListInstancesRegionInstanceGroupsRequest(proto.Message): Name of the region scoping this request. region_instance_groups_list_instances_request_resource (google.cloud.compute_v1.types.RegionInstanceGroupsListInstancesRequest): The body resource for this request - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -82891,11 +84643,6 @@ class ListInstancesRegionInstanceGroupsRequest(proto.Message): number=48239828, message="RegionInstanceGroupsListInstancesRequest", ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInstancesRequest(proto.Message): @@ -83011,17 +84758,6 @@ class ListInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -83050,11 +84786,6 @@ class ListInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -83263,17 +84994,6 @@ class ListInstantSnapshotGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -83302,11 +85022,6 @@ class ListInstantSnapshotGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -83426,17 +85141,6 @@ class ListInstantSnapshotsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -83465,11 +85169,6 @@ class ListInstantSnapshotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -83589,17 +85288,6 @@ class ListInterconnectAttachmentGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -83626,11 +85314,6 @@ class ListInterconnectAttachmentGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectAttachmentsRequest(proto.Message): @@ -83748,17 +85431,6 @@ class ListInterconnectAttachmentsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -83789,11 +85461,6 @@ class ListInterconnectAttachmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectGroupsRequest(proto.Message): @@ -83909,17 +85576,6 @@ class ListInterconnectGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -83946,11 +85602,6 @@ class ListInterconnectGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectLocationsRequest(proto.Message): @@ -84066,17 +85717,6 @@ class ListInterconnectLocationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84103,11 +85743,6 @@ class ListInterconnectLocationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectRemoteLocationsRequest(proto.Message): @@ -84223,17 +85858,6 @@ class ListInterconnectRemoteLocationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84260,11 +85884,6 @@ class ListInterconnectRemoteLocationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListInterconnectsRequest(proto.Message): @@ -84380,17 +85999,6 @@ class ListInterconnectsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84417,11 +86025,6 @@ class ListInterconnectsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListLicensesRequest(proto.Message): @@ -84537,17 +86140,6 @@ class ListLicensesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84574,11 +86166,6 @@ class ListLicensesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListMachineImagesRequest(proto.Message): @@ -84694,17 +86281,6 @@ class ListMachineImagesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -84731,11 +86307,6 @@ class ListMachineImagesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListMachineTypesRequest(proto.Message): @@ -84851,17 +86422,6 @@ class ListMachineTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -84890,11 +86450,6 @@ class ListMachineTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -85017,17 +86572,6 @@ class ListManagedInstancesInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. @@ -85061,11 +86605,6 @@ class ListManagedInstancesInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -85190,17 +86729,6 @@ class ListManagedInstancesRegionInstanceGroupManagersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -85235,15 +86763,10 @@ class ListManagedInstancesRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) -class ListNamedSetsRoutersRequest(proto.Message): - r"""A request message for Routers.ListNamedSets. See the method +class ListManagedRulesetsRequest(proto.Message): + r"""A request message for ManagedRulesets.List. See the method description for details. @@ -85355,22 +86878,6 @@ class ListNamedSetsRoutersRequest(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``. - router (str): - Name or id of the resource for this request. - Name should conform to RFC1035. """ filter: str = proto.Field( @@ -85397,23 +86904,10 @@ class ListNamedSetsRoutersRequest(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, - ) - router: str = proto.Field( - proto.STRING, - number=148608841, - ) -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. @@ -85526,18 +87020,10 @@ class ListNetworkAttachmentsRequest(proto.Message): project (str): Project ID for this request. region (str): - Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + Name of the region for this request. + router (str): + Name or id of the resource for this request. + Name should conform to RFC1035. """ filter: str = proto.Field( @@ -85568,16 +87054,15 @@ class ListNetworkAttachmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + router: str = proto.Field( + proto.STRING, + number=148608841, ) -class 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 @@ -85688,21 +87173,8 @@ class ListNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - The name of thezone - where the network endpoint group is located. It - should comply with RFC1035. + region (str): + Name of the region of this request. """ filter: str = proto.Field( @@ -85729,21 +87201,15 @@ class ListNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( + region: str = proto.Field( proto.STRING, - number=3744684, + number=138946292, ) -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 @@ -85829,11 +87295,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 @@ -85859,17 +87320,10 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + zone (str): + The name of thezone + where the network endpoint group is located. It + should comply with RFC1035. """ filter: str = proto.Field( @@ -85882,10 +87336,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, @@ -85900,16 +87350,15 @@ class ListNetworkEndpointsGlobalNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + zone: str = proto.Field( + proto.STRING, + number=3744684, ) -class 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. @@ -86001,8 +87450,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_v1.types.NetworkEndpointGroupsListEndpointsRequest): - The body resource for this request order_by (str): Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource @@ -86028,21 +87475,6 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. - zone (str): - The name of the zone where - the network endpoint group is located. It should - comply with RFC1035. """ filter: str = proto.Field( @@ -86059,11 +87491,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, @@ -86078,20 +87505,11 @@ class ListNetworkEndpointsNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) -class 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. @@ -86183,6 +87601,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_v1.types.NetworkEndpointGroupsListEndpointsRequest): + The body resource for this request order_by (str): Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource @@ -86208,21 +87628,10 @@ 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 - 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``. + zone (str): + The name of the zone where + the network endpoint group is located. It should + comply with RFC1035. """ filter: str = proto.Field( @@ -86239,6 +87648,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, @@ -86253,20 +87667,16 @@ class ListNetworkEndpointsRegionNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - region: str = proto.Field( + zone: str = proto.Field( proto.STRING, - number=138946292, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + 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 @@ -86352,6 +87762,11 @@ class ListNetworkFirewallPoliciesRequest(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 @@ -86377,17 +87792,10 @@ class ListNetworkFirewallPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. + region (str): + The name of theregion + where the network endpoint group is located. It + should comply with RFC1035. """ filter: str = proto.Field( @@ -86400,6 +87808,10 @@ class ListNetworkFirewallPoliciesRequest(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, @@ -86414,16 +87826,15 @@ class ListNetworkFirewallPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, + region: str = proto.Field( + proto.STRING, + number=138946292, ) -class ListNetworkProfilesRequest(proto.Message): - r"""A request message for NetworkProfiles.List. See the method - description for details. +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 @@ -86534,17 +87945,6 @@ class ListNetworkProfilesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -86571,11 +87971,147 @@ class ListNetworkProfilesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + + +class ListNetworkProfilesRequest(proto.Message): + r"""A request message for NetworkProfiles.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. + """ + + 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, + ) class ListNetworksRequest(proto.Message): @@ -86691,17 +88227,6 @@ class ListNetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -86728,11 +88253,6 @@ class ListNetworksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNodeGroupsRequest(proto.Message): @@ -86848,17 +88368,6 @@ class ListNodeGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -86887,11 +88396,6 @@ class ListNodeGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -87013,17 +88517,6 @@ class ListNodeTemplatesRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -87054,11 +88547,6 @@ class ListNodeTemplatesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListNodeTypesRequest(proto.Message): @@ -87174,17 +88662,6 @@ class ListNodeTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -87213,11 +88690,6 @@ class ListNodeTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -87340,17 +88812,6 @@ class ListNodesNodeGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -87383,11 +88844,6 @@ class ListNodesNodeGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -87509,17 +88965,6 @@ class ListOrganizationSecurityPoliciesRequest(proto.Message): Parent ID for this request. This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -87547,11 +88992,6 @@ class ListOrganizationSecurityPoliciesRequest(proto.Message): number=459714768, optional=True, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPacketMirroringsRequest(proto.Message): @@ -87669,17 +89109,6 @@ class ListPacketMirroringsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -87710,11 +89139,6 @@ class ListPacketMirroringsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPeeringRoutesNetworksRequest(proto.Message): @@ -87849,17 +89273,6 @@ class ListPeeringRoutesNetworksRequest(proto.Message): dynamic routes in the region. This field is a member of `oneof`_ ``_region``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. """ class Direction(proto.Enum): @@ -87922,11 +89335,6 @@ class Direction(proto.Enum): number=138946292, optional=True, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message): @@ -88046,17 +89454,6 @@ class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of thezone where the managed instance group is located. @@ -88091,11 +89488,6 @@ class ListPerInstanceConfigsInstanceGroupManagersRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -88222,17 +89614,6 @@ class ListPerInstanceConfigsRegionInstanceGroupManagersRequest(proto.Message): region (str): Name of the region scoping this request, should conform to RFC1035. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88267,11 +89648,6 @@ class ListPerInstanceConfigsRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPreconfiguredExpressionSetsOrganizationSecurityPoliciesRequest(proto.Message): @@ -88390,17 +89766,6 @@ class ListPreconfiguredExpressionSetsOrganizationSecurityPoliciesRequest(proto.M Parent ID for this request. This field is a member of `oneof`_ ``_parent_id``. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88428,11 +89793,6 @@ class ListPreconfiguredExpressionSetsOrganizationSecurityPoliciesRequest(proto.M number=459714768, optional=True, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message): @@ -88549,17 +89909,6 @@ class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88586,11 +89935,6 @@ class ListPreconfiguredExpressionSetsSecurityPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPreviewFeaturesRequest(proto.Message): @@ -88706,17 +90050,6 @@ class ListPreviewFeaturesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88743,11 +90076,6 @@ class ListPreviewFeaturesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPublicAdvertisedPrefixesRequest(proto.Message): @@ -88863,17 +90191,6 @@ class ListPublicAdvertisedPrefixesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -88900,11 +90217,6 @@ class ListPublicAdvertisedPrefixesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListPublicDelegatedPrefixesRequest(proto.Message): @@ -89022,17 +90334,6 @@ class ListPublicDelegatedPrefixesRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89063,11 +90364,6 @@ class ListPublicDelegatedPrefixesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListReferrersInstancesRequest(proto.Message): @@ -89187,17 +90483,6 @@ class ListReferrersInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -89230,11 +90515,6 @@ class ListReferrersInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -89356,17 +90636,6 @@ class ListRegionAutoscalersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89397,11 +90666,6 @@ class ListRegionAutoscalersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionBackendBucketsRequest(proto.Message): @@ -89519,17 +90783,6 @@ class ListRegionBackendBucketsRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89560,11 +90813,6 @@ class ListRegionBackendBucketsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionBackendServicesRequest(proto.Message): @@ -89682,17 +90930,6 @@ class ListRegionBackendServicesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -89723,11 +90960,6 @@ class ListRegionBackendServicesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionCommitmentsRequest(proto.Message): @@ -89845,17 +91077,6 @@ class ListRegionCommitmentsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -89886,11 +91107,6 @@ class ListRegionCommitmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionCompositeHealthChecksRequest(proto.Message): @@ -90008,17 +91224,6 @@ class ListRegionCompositeHealthChecksRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90049,11 +91254,6 @@ class ListRegionCompositeHealthChecksRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionDiskTypesRequest(proto.Message): @@ -90171,17 +91371,6 @@ class ListRegionDiskTypesRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90212,11 +91401,6 @@ class ListRegionDiskTypesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionDisksRequest(proto.Message): @@ -90334,17 +91518,6 @@ class ListRegionDisksRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -90375,11 +91548,6 @@ class ListRegionDisksRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthAggregationPoliciesRequest(proto.Message): @@ -90497,17 +91665,6 @@ class ListRegionHealthAggregationPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90538,11 +91695,6 @@ class ListRegionHealthAggregationPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthCheckServicesRequest(proto.Message): @@ -90660,17 +91812,6 @@ class ListRegionHealthCheckServicesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90701,11 +91842,6 @@ class ListRegionHealthCheckServicesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthChecksRequest(proto.Message): @@ -90823,17 +91959,6 @@ class ListRegionHealthChecksRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -90864,11 +91989,6 @@ class ListRegionHealthChecksRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionHealthSourcesRequest(proto.Message): @@ -90986,17 +92106,6 @@ class ListRegionHealthSourcesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91027,11 +92136,6 @@ class ListRegionHealthSourcesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceGroupManagerResizeRequestsRequest(proto.Message): @@ -91155,17 +92259,6 @@ class ListRegionInstanceGroupManagerResizeRequestsRequest(proto.Message): Name of the region scoping this request. Name should conform to RFC1035. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91200,11 +92293,6 @@ class ListRegionInstanceGroupManagerResizeRequestsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceGroupManagersRequest(proto.Message): @@ -91322,17 +92410,6 @@ class ListRegionInstanceGroupManagersRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91363,11 +92440,6 @@ class ListRegionInstanceGroupManagersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceGroupsRequest(proto.Message): @@ -91485,17 +92557,6 @@ class ListRegionInstanceGroupsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91526,11 +92587,6 @@ class ListRegionInstanceGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstanceTemplatesRequest(proto.Message): @@ -91648,17 +92704,6 @@ class ListRegionInstanceTemplatesRequest(proto.Message): Project ID for this request. region (str): The name of the regions for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91689,11 +92734,6 @@ class ListRegionInstanceTemplatesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstantSnapshotGroupsRequest(proto.Message): @@ -91811,17 +92851,6 @@ class ListRegionInstantSnapshotGroupsRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -91852,11 +92881,6 @@ class ListRegionInstantSnapshotGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionInstantSnapshotsRequest(proto.Message): @@ -91974,17 +92998,6 @@ class ListRegionInstantSnapshotsRequest(proto.Message): Project ID for this request. region (str): The name of the region for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92015,11 +93028,6 @@ class ListRegionInstantSnapshotsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionNetworkEndpointGroupsRequest(proto.Message): @@ -92139,17 +93147,6 @@ class ListRegionNetworkEndpointGroupsRequest(proto.Message): 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( @@ -92180,11 +93177,6 @@ class ListRegionNetworkEndpointGroupsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionNetworkFirewallPoliciesRequest(proto.Message): @@ -92302,17 +93294,6 @@ class ListRegionNetworkFirewallPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92343,11 +93324,6 @@ class ListRegionNetworkFirewallPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionNotificationEndpointsRequest(proto.Message): @@ -92465,17 +93441,6 @@ class ListRegionNotificationEndpointsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92506,11 +93471,6 @@ class ListRegionNotificationEndpointsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionOperationsRequest(proto.Message): @@ -92628,17 +93588,6 @@ class ListRegionOperationsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -92669,11 +93618,6 @@ class ListRegionOperationsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSecurityPoliciesRequest(proto.Message): @@ -92791,17 +93735,6 @@ class ListRegionSecurityPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -92832,11 +93765,6 @@ class ListRegionSecurityPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSnapshotsRequest(proto.Message): @@ -92954,17 +93882,6 @@ class ListRegionSnapshotsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -92995,11 +93912,6 @@ class ListRegionSnapshotsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSslCertificatesRequest(proto.Message): @@ -93117,17 +94029,6 @@ class ListRegionSslCertificatesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93158,11 +94059,6 @@ class ListRegionSslCertificatesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionSslPoliciesRequest(proto.Message): @@ -93280,17 +94176,6 @@ class ListRegionSslPoliciesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93321,11 +94206,6 @@ class ListRegionSslPoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionTargetHttpProxiesRequest(proto.Message): @@ -93443,17 +94323,6 @@ class ListRegionTargetHttpProxiesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93484,11 +94353,6 @@ class ListRegionTargetHttpProxiesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionTargetHttpsProxiesRequest(proto.Message): @@ -93606,17 +94470,6 @@ class ListRegionTargetHttpsProxiesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93647,11 +94500,6 @@ class ListRegionTargetHttpsProxiesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionTargetTcpProxiesRequest(proto.Message): @@ -93769,17 +94617,6 @@ class ListRegionTargetTcpProxiesRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93810,11 +94647,6 @@ class ListRegionTargetTcpProxiesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionUrlMapsRequest(proto.Message): @@ -93932,17 +94764,6 @@ class ListRegionUrlMapsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -93973,11 +94794,6 @@ class ListRegionUrlMapsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionZonesRequest(proto.Message): @@ -94095,17 +94911,6 @@ class ListRegionZonesRequest(proto.Message): Project ID for this request. region (str): 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``. """ filter: str = proto.Field( @@ -94136,11 +94941,6 @@ class ListRegionZonesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRegionsRequest(proto.Message): @@ -94256,174 +95056,6 @@ class ListRegionsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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, - ) - order_by: str = proto.Field( - proto.STRING, - number=160562920, - optional=True, - ) - page_token: str = proto.Field( - proto.STRING, - number=19994697, - optional=True, - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) - - -class ListReliabilityRisksRequest(proto.Message): - r"""A request message for ReliabilityRisks.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. - 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( @@ -94450,11 +95082,147 @@ class ListReliabilityRisksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, + + +class ListReliabilityRisksRequest(proto.Message): + r"""A request message for ReliabilityRisks.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. + """ + + 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, + ) class ListReservationBlocksRequest(proto.Message): @@ -94574,17 +95342,6 @@ class ListReservationBlocksRequest(proto.Message): The name of the reservation. Name should conform to RFC1035 or be a resource ID. - 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``. zone (str): Name of the zone for this request. Zone name should conform to RFC1035. @@ -94618,11 +95375,6 @@ class ListReservationBlocksRequest(proto.Message): proto.STRING, number=47530956, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -94746,17 +95498,6 @@ class ListReservationSlotsRequest(proto.Message): reservations/{reservation_name}/reservationBlocks/{reservation_block_name}/reservationSubBlocks/{reservation_sub_block_name} project (str): The project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request, formatted as RFC1035. @@ -94790,11 +95531,6 @@ class ListReservationSlotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -94918,17 +95654,6 @@ class ListReservationSubBlocksRequest(proto.Message): reservations/{reservation_name}/reservationBlocks/{reservation_block_name} project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. Zone name should conform to RFC1035. @@ -94962,11 +95687,6 @@ class ListReservationSubBlocksRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -95086,17 +95806,6 @@ class ListReservationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. """ @@ -95125,11 +95834,6 @@ class ListReservationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -95251,17 +95955,6 @@ class ListResourcePoliciesRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -95292,11 +95985,6 @@ class ListResourcePoliciesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRolloutPlansRequest(proto.Message): @@ -95412,17 +96100,6 @@ class ListRolloutPlansRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -95449,11 +96126,6 @@ class ListRolloutPlansRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRolloutsRequest(proto.Message): @@ -95569,17 +96241,6 @@ class ListRolloutsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -95606,11 +96267,6 @@ class ListRolloutsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRoutePoliciesRoutersRequest(proto.Message): @@ -95728,17 +96384,6 @@ class ListRoutePoliciesRoutersRequest(proto.Message): 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``. router (str): Name or id of the resource for this request. Name should conform to RFC1035. @@ -95772,11 +96417,6 @@ class ListRoutePoliciesRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) router: str = proto.Field( proto.STRING, number=148608841, @@ -95898,17 +96538,6 @@ class ListRoutersRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -95939,11 +96568,6 @@ class ListRoutersRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListRoutesRequest(proto.Message): @@ -96059,17 +96683,6 @@ class ListRoutesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96096,11 +96709,6 @@ class ListRoutesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSecurityPoliciesRequest(proto.Message): @@ -96216,17 +96824,6 @@ class ListSecurityPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96253,11 +96850,6 @@ class ListSecurityPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListServiceAttachmentsRequest(proto.Message): @@ -96375,17 +96967,6 @@ class ListServiceAttachmentsRequest(proto.Message): Project ID for this request. region (str): Name of the region of this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96416,11 +96997,6 @@ class ListServiceAttachmentsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSnapshotsRequest(proto.Message): @@ -96536,17 +97112,6 @@ class ListSnapshotsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96573,11 +97138,6 @@ class ListSnapshotsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSslCertificatesRequest(proto.Message): @@ -96693,17 +97253,6 @@ class ListSslCertificatesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96730,11 +97279,6 @@ class ListSslCertificatesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListSslPoliciesRequest(proto.Message): @@ -96850,17 +97394,6 @@ class ListSslPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -96887,11 +97420,6 @@ class ListSslPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListStoragePoolTypesRequest(proto.Message): @@ -97007,17 +97535,6 @@ class ListStoragePoolTypesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -97046,11 +97563,6 @@ class ListStoragePoolTypesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -97170,17 +97682,6 @@ class ListStoragePoolsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): The name of the zone for this request. """ @@ -97209,11 +97710,6 @@ class ListStoragePoolsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -97335,17 +97831,6 @@ class ListSubnetworksRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. views (str): Defines the extra views returned back in the subnetwork resource. Supported values: @@ -97411,11 +97896,6 @@ class Views(proto.Enum): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) views: str = proto.Field( proto.STRING, number=112204398, @@ -97536,17 +98016,6 @@ class ListTargetGrpcProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -97573,11 +98042,6 @@ class ListTargetGrpcProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetHttpProxiesRequest(proto.Message): @@ -97693,17 +98157,6 @@ class ListTargetHttpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -97730,11 +98183,6 @@ class ListTargetHttpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetHttpsProxiesRequest(proto.Message): @@ -97850,17 +98298,6 @@ class ListTargetHttpsProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -97887,11 +98324,6 @@ class ListTargetHttpsProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetInstancesRequest(proto.Message): @@ -98007,17 +98439,6 @@ class ListTargetInstancesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone scoping this request. """ @@ -98046,11 +98467,6 @@ class ListTargetInstancesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -98172,17 +98588,6 @@ class ListTargetPoolsRequest(proto.Message): Project ID for this request. region (str): Name of the region scoping this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98213,11 +98618,6 @@ class ListTargetPoolsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetSslProxiesRequest(proto.Message): @@ -98333,17 +98733,6 @@ class ListTargetSslProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98370,11 +98759,6 @@ class ListTargetSslProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetTcpProxiesRequest(proto.Message): @@ -98490,17 +98874,6 @@ class ListTargetTcpProxiesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98527,11 +98900,6 @@ class ListTargetTcpProxiesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListTargetVpnGatewaysRequest(proto.Message): @@ -98649,17 +99017,6 @@ class ListTargetVpnGatewaysRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -98690,11 +99047,6 @@ class ListTargetVpnGatewaysRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUrlMapsRequest(proto.Message): @@ -98810,17 +99162,6 @@ class ListUrlMapsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -98847,11 +99188,6 @@ class ListUrlMapsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableBackendBucketsRequest(proto.Message): @@ -98967,17 +99303,6 @@ class ListUsableBackendBucketsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -99004,11 +99329,6 @@ class ListUsableBackendBucketsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableBackendServicesRequest(proto.Message): @@ -99124,17 +99444,6 @@ class ListUsableBackendServicesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -99161,11 +99470,6 @@ class ListUsableBackendServicesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableRegionBackendBucketsRequest(proto.Message): @@ -99285,17 +99589,6 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): 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 - 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( @@ -99326,11 +99619,6 @@ class ListUsableRegionBackendBucketsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableRegionBackendServicesRequest(proto.Message): @@ -99450,17 +99738,6 @@ class ListUsableRegionBackendServicesRequest(proto.Message): 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 - 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( @@ -99491,11 +99768,6 @@ class ListUsableRegionBackendServicesRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListUsableSubnetworksRequest(proto.Message): @@ -99611,17 +99883,6 @@ class ListUsableSubnetworksRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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 @@ -99655,11 +99916,6 @@ class ListUsableSubnetworksRequest(proto.Message): 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, @@ -99782,17 +100038,6 @@ class ListVpnGatewaysRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -99823,11 +100068,6 @@ class ListVpnGatewaysRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListVpnTunnelsRequest(proto.Message): @@ -99945,17 +100185,6 @@ class ListVpnTunnelsRequest(proto.Message): 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``. """ filter: str = proto.Field( @@ -99986,11 +100215,6 @@ class ListVpnTunnelsRequest(proto.Message): proto.STRING, number=138946292, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListWireGroupsRequest(proto.Message): @@ -100108,17 +100332,6 @@ class ListWireGroupsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. """ cross_site_network: str = proto.Field( @@ -100149,11 +100362,6 @@ class ListWireGroupsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListXpnHostsProjectsRequest(proto.Message): @@ -100271,17 +100479,6 @@ class ListXpnHostsProjectsRequest(proto.Message): Project ID for this request. projects_list_xpn_hosts_request_resource (google.cloud.compute_v1.types.ProjectsListXpnHostsRequest): The body resource for this request - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -100315,11 +100512,6 @@ class ListXpnHostsProjectsRequest(proto.Message): message="ProjectsListXpnHostsRequest", ) ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class ListZoneOperationsRequest(proto.Message): @@ -100435,17 +100627,6 @@ class ListZoneOperationsRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for request. """ @@ -100474,11 +100655,6 @@ class ListZoneOperationsRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -100598,17 +100774,6 @@ class ListZoneVmExtensionPoliciesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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``. zone (str): Name of the zone for this request. """ @@ -100637,11 +100802,6 @@ class ListZoneVmExtensionPoliciesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -100761,17 +100921,6 @@ class ListZonesRequest(proto.Message): This field is a member of `oneof`_ ``_page_token``. project (str): Project ID for this request. - return_partial_success (bool): - Opt-in for partial success behavior which - provides partial results in case of failure. The - default value is false. - - 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( @@ -100798,11 +100947,6 @@ class ListZonesRequest(proto.Message): proto.STRING, number=227560217, ) - return_partial_success: bool = proto.Field( - proto.BOOL, - number=517198390, - optional=True, - ) class LocalDisk(proto.Message): @@ -102317,6 +102461,13 @@ class ManagedInstanceLastAttempt(proto.Message): last attempt to create or delete the instance. This field is a member of `oneof`_ ``_errors``. + timestamp (str): + Output only. Show timestamp only if there is + an error. The field value should match + corresponding timestamp in listErrors.RFC3339 + text format. + + This field is a member of `oneof`_ ``_timestamp``. """ errors: "ManagedInstanceLastAttemptErrors" = proto.Field( @@ -102325,6 +102476,11 @@ class ManagedInstanceLastAttempt(proto.Message): optional=True, message="ManagedInstanceLastAttemptErrors", ) + timestamp: str = proto.Field( + proto.STRING, + number=55126294, + optional=True, + ) class ManagedInstanceLastAttemptErrors(proto.Message): @@ -102350,18 +102506,35 @@ class ManagedInstancePropertiesFromFlexibilityPolicy(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + disks (MutableSequence[google.cloud.compute_v1.types.AttachedDisk]): + List of disks to be attached to the instance. machine_type (str): Output only. The machine type to be used for this instance. This field is a member of `oneof`_ ``_machine_type``. + min_cpu_platform (str): + Name of the minimum CPU platform to be used + by this instance. e.g. 'Intel Ice Lake'. + + This field is a member of `oneof`_ ``_min_cpu_platform``. """ + disks: MutableSequence["AttachedDisk"] = proto.RepeatedField( + proto.MESSAGE, + number=95594102, + message="AttachedDisk", + ) machine_type: str = proto.Field( proto.STRING, number=227711026, optional=True, ) + min_cpu_platform: str = proto.Field( + proto.STRING, + number=242912759, + optional=True, + ) class ManagedInstanceScheduling(proto.Message): @@ -102458,6 +102631,150 @@ class ManagedInstanceVersion(proto.Message): ) +class ManagedRuleset(proto.Message): + r"""Represents a ManagedRuleset resource. + + Managed internally by Cloud Armor CLH for Managed Rules + features. Customers can only view these resources to modify + their Security Policies. For more information, see + https://cloud.google.com/armor/docs/. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + change_log (str): + Output only. [Output Only] The change log for this managed + ruleset. + + This field is a member of `oneof`_ ``_change_log``. + creation_timestamp (str): + Output only. [Output Only] Creation timestamp in RFC3339 + text format. + + This field is a member of `oneof`_ ``_creation_timestamp``. + description (str): + [Output Only] An optional description of this 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``. + name (str): + Name of the resource. Generated internally 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``. + rule_ids (MutableSequence[str]): + Output only. [Output Only] The list of managed rule IDs that + are included in this managed ruleset. + ruleset_id (str): + Output only. [Output Only] The managed ruleset identifier + that can be configured in Security Policy rules. + + This field is a member of `oneof`_ ``_ruleset_id``. + self_link (str): + Output only. [Output Only] Server-defined URL for the + resource. + + This field is a member of `oneof`_ ``_self_link``. + """ + + change_log: str = proto.Field( + proto.STRING, + number=15896117, + optional=True, + ) + creation_timestamp: str = proto.Field( + proto.STRING, + number=30525366, + optional=True, + ) + description: str = proto.Field( + proto.STRING, + number=422937596, + optional=True, + ) + id: int = proto.Field( + proto.UINT64, + number=3355, + optional=True, + ) + name: str = proto.Field( + proto.STRING, + number=3373707, + optional=True, + ) + rule_ids: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=226918133, + ) + ruleset_id: str = proto.Field( + proto.STRING, + number=131214356, + optional=True, + ) + self_link: str = proto.Field( + proto.STRING, + number=456214797, + optional=True, + ) + + +class ManagedRulesetList(proto.Message): + r""" + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + id (str): + + This field is a member of `oneof`_ ``_id``. + items (MutableSequence[google.cloud.compute_v1.types.ManagedRuleset]): + The list of managed rulesets. + next_page_token (str): + + This field is a member of `oneof`_ ``_next_page_token``. + warning (google.cloud.compute_v1.types.Warning): + + This field is a member of `oneof`_ ``_warning``. + """ + + @property + def raw_page(self): + return self + + id: str = proto.Field( + proto.STRING, + number=3355, + optional=True, + ) + items: MutableSequence["ManagedRuleset"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="ManagedRuleset", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=79797525, + optional=True, + ) + warning: "Warning" = proto.Field( + proto.MESSAGE, + number=50704284, + optional=True, + message="Warning", + ) + + class Metadata(proto.Message): r"""A metadata key/value entry. @@ -104094,6 +104411,11 @@ class NetworkEdgeSecurityService(proto.Message): except the last character, which cannot be a dash. This field is a member of `oneof`_ ``_name``. + params (google.cloud.compute_v1.types.NetworkEdgeSecurityServiceParams): + Input only. [Input Only] Additional params passed with the + request, but not persisted as part of resource payload. + + This field is a member of `oneof`_ ``_params``. region (str): Output only. [Output Only] URL of the region where the resource resides. You must specify this field as part of the @@ -104149,6 +104471,12 @@ class NetworkEdgeSecurityService(proto.Message): number=3373707, optional=True, ) + params: "NetworkEdgeSecurityServiceParams" = proto.Field( + proto.MESSAGE, + number=78313862, + optional=True, + message="NetworkEdgeSecurityServiceParams", + ) region: str = proto.Field( proto.STRING, number=138946292, @@ -104265,6 +104593,37 @@ def raw_page(self): ) +class NetworkEdgeSecurityServiceParams(proto.Message): + r"""Additional network edge security service parameters. + + Attributes: + resource_manager_tags (MutableMapping[str, str]): + Tag keys/values directly bound to this resource. Tag keys + and values have the same definition as resource manager + tags. The field is allowed for INSERT only. The keys/values + to set on the resource should be specified in either ID { : + } or Namespaced format { : }. For example the following are + valid inputs: + + - {"tagKeys/333" : "tagValues/444", "tagKeys/123" : + "tagValues/456"} + - {"123/environment" : "production", "345/abc" : "xyz"} + Note: + - Invalid combinations of ID & namespaced format is not + supported. For instance: {"123/environment" : + "tagValues/444"} is invalid. + - Inconsistent format is not supported. For instance: + {"tagKeys/333" : "tagValues/444", "123/env" : "prod"} is + invalid. + """ + + resource_manager_tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=377671164, + ) + + class NetworkEdgeSecurityServicesScopedList(proto.Message): r""" @@ -110644,6 +111003,11 @@ class Operation(proto.Message): instances_bulk_insert_operation_metadata (google.cloud.compute_v1.types.InstancesBulkInsertOperationMetadata): This field is a member of `oneof`_ ``_instances_bulk_insert_operation_metadata``. + instances_troubleshoot_operation_metadata (google.cloud.compute_v1.types.InstancesTroubleshootOperationMetadata): + Output only. [Output Only] Operation metadata for + instances.troubleshoot. + + This field is a member of `oneof`_ ``_instances_troubleshoot_operation_metadata``. kind (str): Output only. [Output Only] Type of the resource. Always ``compute#operation`` for Operation resources. @@ -110820,6 +111184,12 @@ class Status(proto.Enum): message="InstancesBulkInsertOperationMetadata", ) ) + instances_troubleshoot_operation_metadata: "InstancesTroubleshootOperationMetadata" = proto.Field( + proto.MESSAGE, + number=264693341, + optional=True, + message="InstancesTroubleshootOperationMetadata", + ) kind: str = proto.Field( proto.STRING, number=3292052, @@ -112053,6 +112423,311 @@ class PacketMirroringsScopedList(proto.Message): ) +class PartitionFormability(proto.Message): + r"""Formability of a partition. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + accelerator_topology (str): + Topological shape (e.g., "4x4x4"). + + This field is a member of `oneof`_ ``_accelerator_topology``. + parent (str): + Partition ID of a partition that is a direct + parent in the tree hierarchy. In case the + partition represents a full cube, it doesn't + have a parent field. + + This field is a member of `oneof`_ ``_parent``. + partition_id (str): + Identifier for this topological block. + + This field is a member of `oneof`_ ``_partition_id``. + status (google.cloud.compute_v1.types.PartitionFormabilityStatus): + Output only. Defines the status of the + partition. + + This field is a member of `oneof`_ ``_status``. + subblock (str): + The URL of the capacity subblock. + + This field is a member of `oneof`_ ``_subblock``. + """ + + accelerator_topology: str = proto.Field( + proto.STRING, + number=389323203, + optional=True, + ) + parent: str = proto.Field( + proto.STRING, + number=78317738, + optional=True, + ) + partition_id: str = proto.Field( + proto.STRING, + number=222396048, + optional=True, + ) + status: "PartitionFormabilityStatus" = proto.Field( + proto.MESSAGE, + number=181260274, + optional=True, + message="PartitionFormabilityStatus", + ) + subblock: str = proto.Field( + proto.STRING, + number=70446669, + optional=True, + ) + + +class PartitionFormabilityStatus(proto.Message): + r"""Status of a partition formability. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + accelerator_interconnect (str): + URL of the AcceleratorInterconnect utilizing + this partition. + + This field is a member of `oneof`_ ``_accelerator_interconnect``. + error (google.cloud.compute_v1.types.Error): + Detailed error status if the subblock has + wrong or no provisioning. When set, only + subblock and error are populated. + + This field is a member of `oneof`_ ``_error``. + infrastructure_health (str): + Physical health of the underlying + infrastructure. Check the InfrastructureHealth + enum for the list of possible values. + + This field is a member of `oneof`_ ``_infrastructure_health``. + instance (str): + URL of an instance provisioned in a + single-host partitionID at the lowest level of + the partition tree. Empty if the instance is + missing. + + This field is a member of `oneof`_ ``_instance``. + instance_state (str): + State of the instances within this partition. + Check the InstanceState enum for the list of + possible values. + + This field is a member of `oneof`_ ``_instance_state``. + state (str): + Current formability state. + Check the State enum for the list of possible + values. + + This field is a member of `oneof`_ ``_state``. + usage_state (str): + Usage state indicating if the partition is + occupied. Check the UsageState enum for the list + of possible values. + + This field is a member of `oneof`_ ``_usage_state``. + """ + + class InfrastructureHealth(proto.Enum): + r"""Physical health of the underlying infrastructure. + + Values: + UNDEFINED_INFRASTRUCTURE_HEALTH (0): + A value indicating that the enum field is not + set. + DEGRADED (396890926): + The underlying infrastructure has issues that + degrade performance but allow placement. + HEALTHY (439801213): + The underlying infrastructure is healthy. + INFRASTRUCTURE_HEALTH_UNSPECIFIED (307824080): + Unspecified infrastructure health. + UNHEALTHY (462118084): + The underlying infrastructure has issues that + prevent placement. + """ + + UNDEFINED_INFRASTRUCTURE_HEALTH = 0 + DEGRADED = 396890926 + HEALTHY = 439801213 + INFRASTRUCTURE_HEALTH_UNSPECIFIED = 307824080 + UNHEALTHY = 462118084 + + class InstanceState(proto.Enum): + r"""State of the instances within this partition. Additional supported + values which may be not listed in the enum directly due to technical + reasons: NOT_READY + + Values: + UNDEFINED_INSTANCE_STATE (0): + A value indicating that the enum field is not + set. + INSTANCE_STATE_UNSPECIFIED (360741663): + Unspecified instance state. + RUNNING (121282975): + A sufficient number of instances are + provisioned and they are in the required status. + """ + + UNDEFINED_INSTANCE_STATE = 0 + INSTANCE_STATE_UNSPECIFIED = 360741663 + RUNNING = 121282975 + + class State(proto.Enum): + r"""Current formability state. Additional supported values which may be + not listed in the enum directly due to technical reasons: NOT_READY + + Values: + UNDEFINED_STATE (0): + A value indicating that the enum field is not + set. + READY (77848963): + An AcceleratorInterconnect resource can be + deployed immediately and will achieve full + performance. + READY_DEGRADED (231433834): + An AcceleratorInterconnect resource can be + deployed immediately but will achieve degraded + performance. + STATE_UNSPECIFIED (470755401): + Unspecified partition formability state. + """ + + UNDEFINED_STATE = 0 + READY = 77848963 + READY_DEGRADED = 231433834 + STATE_UNSPECIFIED = 470755401 + + class UsageState(proto.Enum): + r"""Usage state indicating if the partition is occupied. + + Values: + UNDEFINED_USAGE_STATE (0): + A value indicating that the enum field is not + set. + FREE (2166380): + Capacity is unallocated and available for + interconnect formation. + IN_USE (17393485): + Capacity is currently part of an + AcceleratorInterconnect. + USAGE_STATE_UNSPECIFIED (229284107): + Unspecified usage state. + """ + + UNDEFINED_USAGE_STATE = 0 + FREE = 2166380 + IN_USE = 17393485 + USAGE_STATE_UNSPECIFIED = 229284107 + + accelerator_interconnect: str = proto.Field( + proto.STRING, + number=313143778, + optional=True, + ) + error: "Error" = proto.Field( + proto.MESSAGE, + number=96784904, + optional=True, + message="Error", + ) + infrastructure_health: str = proto.Field( + proto.STRING, + number=300936312, + optional=True, + ) + instance: str = proto.Field( + proto.STRING, + number=18257045, + optional=True, + ) + instance_state: str = proto.Field( + proto.STRING, + number=92223591, + optional=True, + ) + state: str = proto.Field( + proto.STRING, + number=109757585, + optional=True, + ) + usage_state: str = proto.Field( + proto.STRING, + number=176629875, + optional=True, + ) + + +class PatchAssociationRegionNetworkFirewallPolicyRequest(proto.Message): + r"""A request message for + RegionNetworkFirewallPolicies.PatchAssociation. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + firewall_policy (str): + Name of the firewall policy to update. + firewall_policy_association_resource (google.cloud.compute_v1.types.FirewallPolicyAssociation): + The body resource for this request + project (str): + Project ID for this request. + region (str): + Name of the region scoping this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + firewall_policy: str = proto.Field( + proto.STRING, + number=498173265, + ) + firewall_policy_association_resource: "FirewallPolicyAssociation" = proto.Field( + proto.MESSAGE, + number=259546170, + message="FirewallPolicyAssociation", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + class PatchAutoscalerRequest(proto.Message): r"""A request message for Autoscalers.Patch. See the method description for details. @@ -112216,14 +112891,199 @@ class PatchBackendServiceRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - backend_service: str = proto.Field( + backend_service: str = proto.Field( + proto.STRING, + number=306946058, + ) + backend_service_resource: "BackendService" = proto.Field( + proto.MESSAGE, + number=347586723, + message="BackendService", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + +class PatchCrossSiteNetworkRequest(proto.Message): + r"""A request message for CrossSiteNetworks.Patch. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + cross_site_network (str): + Name of the cross-site network to update. + cross_site_network_resource (google.cloud.compute_v1.types.CrossSiteNetwork): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. Specify a + unique request ID so that if you must retry your request, + the server will know to ignore the request if it has already + been completed. + + For example, consider a situation where you make an initial + request and the request times out. If you make the request + again with the same request ID, the server can check if + original operation with the same request ID was received, + and if so, will ignore the second request. This prevents + clients from accidentally creating duplicate commitments. + + The request ID must be a valid UUID with the exception that + zero UUID is not supported + (00000000-0000-0000-0000-000000000000). end_interface: + MixerMutationRequestBuilder + + This field is a member of `oneof`_ ``_request_id``. + update_mask (str): + update_mask indicates fields to be updated as part of this + request. + + This field is a member of `oneof`_ ``_update_mask``. + validate_only (bool): + [Input Only] Validate the new configuration, but don't + update it. + + This field is a member of `oneof`_ ``_validate_only``. + """ + + cross_site_network: str = proto.Field( + proto.STRING, + number=108192469, + ) + cross_site_network_resource: "CrossSiteNetwork" = proto.Field( + proto.MESSAGE, + number=30896696, + message="CrossSiteNetwork", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + update_mask: str = proto.Field( + proto.STRING, + number=500079778, + optional=True, + ) + validate_only: bool = proto.Field( + proto.BOOL, + number=242744629, + optional=True, + ) + + +class PatchFirewallPolicyRequest(proto.Message): + r"""A request message for FirewallPolicies.Patch. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + firewall_policy (str): + Name of the firewall policy to update. + firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy): + The body resource for this request + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + firewall_policy: str = proto.Field( + proto.STRING, + number=498173265, + ) + firewall_policy_resource: "FirewallPolicy" = proto.Field( + proto.MESSAGE, + number=495049532, + message="FirewallPolicy", + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + + +class PatchFirewallRequest(proto.Message): + r"""A request message for Firewalls.Patch. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + firewall (str): + Name of the firewall rule to patch. + firewall_resource (google.cloud.compute_v1.types.Firewall): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + """ + + firewall: str = proto.Field( proto.STRING, - number=306946058, + number=511016192, ) - backend_service_resource: "BackendService" = proto.Field( + firewall_resource: "Firewall" = proto.Field( proto.MESSAGE, - number=347586723, - message="BackendService", + number=41425005, + message="Firewall", ) project: str = proto.Field( proto.STRING, @@ -112236,93 +113096,22 @@ class PatchBackendServiceRequest(proto.Message): ) -class PatchCrossSiteNetworkRequest(proto.Message): - r"""A request message for CrossSiteNetworks.Patch. See the method +class PatchForwardingRuleRequest(proto.Message): + r"""A request message for ForwardingRules.Patch. See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - cross_site_network (str): - Name of the cross-site network to update. - cross_site_network_resource (google.cloud.compute_v1.types.CrossSiteNetwork): + forwarding_rule (str): + Name of the ForwardingRule resource to patch. + forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule): The body resource for this request project (str): Project ID for this request. - request_id (str): - An optional request ID to identify requests. Specify a - unique request ID so that if you must retry your request, - the server will know to ignore the request if it has already - been completed. - - For example, consider a situation where you make an initial - request and the request times out. If you make the request - again with the same request ID, the server can check if - original operation with the same request ID was received, - and if so, will ignore the second request. This prevents - clients from accidentally creating duplicate commitments. - - The request ID must be a valid UUID with the exception that - zero UUID is not supported - (00000000-0000-0000-0000-000000000000). end_interface: - MixerMutationRequestBuilder - - This field is a member of `oneof`_ ``_request_id``. - update_mask (str): - update_mask indicates fields to be updated as part of this - request. - - This field is a member of `oneof`_ ``_update_mask``. - validate_only (bool): - [Input Only] Validate the new configuration, but don't - update it. - - This field is a member of `oneof`_ ``_validate_only``. - """ - - cross_site_network: str = proto.Field( - proto.STRING, - number=108192469, - ) - cross_site_network_resource: "CrossSiteNetwork" = proto.Field( - proto.MESSAGE, - number=30896696, - message="CrossSiteNetwork", - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - request_id: str = proto.Field( - proto.STRING, - number=37109963, - optional=True, - ) - update_mask: str = proto.Field( - proto.STRING, - number=500079778, - optional=True, - ) - validate_only: bool = proto.Field( - proto.BOOL, - number=242744629, - optional=True, - ) - - -class PatchFirewallPolicyRequest(proto.Message): - r"""A request message for FirewallPolicies.Patch. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - firewall_policy (str): - Name of the firewall policy to update. - firewall_policy_resource (google.cloud.compute_v1.types.FirewallPolicy): - The body resource for this request + 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 @@ -112347,14 +113136,22 @@ class PatchFirewallPolicyRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - firewall_policy: str = proto.Field( + forwarding_rule: str = proto.Field( proto.STRING, - number=498173265, + number=269964030, ) - firewall_policy_resource: "FirewallPolicy" = proto.Field( + forwarding_rule_resource: "ForwardingRule" = proto.Field( proto.MESSAGE, - number=495049532, - message="FirewallPolicy", + number=301211695, + message="ForwardingRule", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, ) request_id: str = proto.Field( proto.STRING, @@ -112363,17 +113160,17 @@ class PatchFirewallPolicyRequest(proto.Message): ) -class PatchFirewallRequest(proto.Message): - r"""A request message for Firewalls.Patch. See the method - description for details. +class PatchGlobalForwardingRuleRequest(proto.Message): + r"""A request message for GlobalForwardingRules.Patch. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - firewall (str): - Name of the firewall rule to patch. - firewall_resource (google.cloud.compute_v1.types.Firewall): + forwarding_rule (str): + Name of the ForwardingRule resource to patch. + forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule): The body resource for this request project (str): Project ID for this request. @@ -112401,14 +113198,14 @@ class PatchFirewallRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - firewall: str = proto.Field( + forwarding_rule: str = proto.Field( proto.STRING, - number=511016192, + number=269964030, ) - firewall_resource: "Firewall" = proto.Field( + forwarding_rule_resource: "ForwardingRule" = proto.Field( proto.MESSAGE, - number=41425005, - message="Firewall", + number=301211695, + message="ForwardingRule", ) project: str = proto.Field( proto.STRING, @@ -112421,84 +113218,64 @@ class PatchFirewallRequest(proto.Message): ) -class PatchForwardingRuleRequest(proto.Message): - r"""A request message for ForwardingRules.Patch. See the method - description for details. +class PatchGlobalFrontendSettingRequest(proto.Message): + r"""A request message for GlobalFrontendSettingsService.Patch. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - forwarding_rule (str): - Name of the ForwardingRule resource to patch. - forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule): + global_frontend_settings_resource (google.cloud.compute_v1.types.GlobalFrontendSettings): The body resource for this request project (str): - Project ID for this request. - region (str): - Name of the region scoping this request. + Required. Project ID for this request. request_id (str): An optional request ID to identify requests. - Specify a unique request ID so that if you must - retry your request, the server will know to - ignore the request if it has already been - completed. - - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. + update_mask (str): + Field mask to support patch. E.g., "type". + + This field is a member of `oneof`_ ``_update_mask``. """ - forwarding_rule: str = proto.Field( - proto.STRING, - number=269964030, - ) - forwarding_rule_resource: "ForwardingRule" = proto.Field( + global_frontend_settings_resource: "GlobalFrontendSettings" = proto.Field( proto.MESSAGE, - number=301211695, - message="ForwardingRule", + number=233377241, + message="GlobalFrontendSettings", ) project: str = proto.Field( proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) request_id: str = proto.Field( proto.STRING, number=37109963, optional=True, ) + update_mask: str = proto.Field( + proto.STRING, + number=500079778, + optional=True, + ) -class PatchGlobalForwardingRuleRequest(proto.Message): - r"""A request message for GlobalForwardingRules.Patch. See the - method description for details. +class PatchGlobalPublicDelegatedPrefixeRequest(proto.Message): + r"""A request message for GlobalPublicDelegatedPrefixes.Patch. + See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - forwarding_rule (str): - Name of the ForwardingRule resource to patch. - forwarding_rule_resource (google.cloud.compute_v1.types.ForwardingRule): - The body resource for this request project (str): Project ID for this request. + public_delegated_prefix (str): + Name of the PublicDelegatedPrefix resource to + patch. + public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix): + The body resource for this request request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -112523,19 +113300,19 @@ class PatchGlobalForwardingRuleRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. """ - forwarding_rule: str = proto.Field( - proto.STRING, - number=269964030, - ) - forwarding_rule_resource: "ForwardingRule" = proto.Field( - proto.MESSAGE, - number=301211695, - message="ForwardingRule", - ) project: str = proto.Field( proto.STRING, number=227560217, ) + public_delegated_prefix: str = proto.Field( + proto.STRING, + number=204238440, + ) + public_delegated_prefix_resource: "PublicDelegatedPrefix" = proto.Field( + proto.MESSAGE, + number=47594501, + message="PublicDelegatedPrefix", + ) request_id: str = proto.Field( proto.STRING, number=37109963, @@ -112543,21 +113320,22 @@ class PatchGlobalForwardingRuleRequest(proto.Message): ) -class PatchGlobalPublicDelegatedPrefixeRequest(proto.Message): - r"""A request message for GlobalPublicDelegatedPrefixes.Patch. - See the method description for details. +class PatchHaControllerRequest(proto.Message): + r"""A request message for HaControllers.Patch. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + ha_controller (str): + ID of the HaController resource to update. + ha_controller_resource (google.cloud.compute_v1.types.HaController): + The body resource for this request project (str): Project ID for this request. - public_delegated_prefix (str): - Name of the PublicDelegatedPrefix resource to - patch. - public_delegated_prefix_resource (google.cloud.compute_v1.types.PublicDelegatedPrefix): - The body resource for this request + region (str): + Name of the region for this request. request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -112565,41 +113343,41 @@ class PatchGlobalPublicDelegatedPrefixeRequest(proto.Message): ignore the request if it has already been completed. - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). - This field is a member of `oneof`_ ``_request_id``. + update_mask (str): + update_mask indicates fields to be updated as part of this + request. + + This field is a member of `oneof`_ ``_update_mask``. """ + ha_controller: str = proto.Field( + proto.STRING, + number=375850658, + ) + ha_controller_resource: "HaController" = proto.Field( + proto.MESSAGE, + number=229262603, + message="HaController", + ) project: str = proto.Field( proto.STRING, number=227560217, ) - public_delegated_prefix: str = proto.Field( + region: str = proto.Field( proto.STRING, - number=204238440, - ) - public_delegated_prefix_resource: "PublicDelegatedPrefix" = proto.Field( - proto.MESSAGE, - number=47594501, - message="PublicDelegatedPrefix", + number=138946292, ) request_id: str = proto.Field( proto.STRING, number=37109963, optional=True, ) + update_mask: str = proto.Field( + proto.STRING, + number=500079778, + optional=True, + ) class PatchHealthCheckRequest(proto.Message): @@ -118002,8 +118780,6 @@ class Project(proto.Message): requests to Compute Engine. This field is a member of `oneof`_ ``_name``. - quotas (MutableSequence[google.cloud.compute_v1.types.Quota]): - [Output Only] Quotas assigned to this project. self_link (str): [Output Only] Server-defined URL for the resource. @@ -118175,11 +118951,6 @@ class XpnProjectStatus(proto.Enum): number=3373707, optional=True, ) - quotas: MutableSequence["Quota"] = proto.RepeatedField( - proto.MESSAGE, - number=125341947, - message="Quota", - ) self_link: str = proto.Field( proto.STRING, number=456214797, @@ -119674,554 +120445,215 @@ class PublicDelegatedPrefixesScopedList(proto.Message): ) -class Quota(proto.Message): - r"""A quotas entry. +class QueryFormabilityAcceleratorInterconnectsRequest(proto.Message): + r"""A request message for + AcceleratorInterconnects.QueryFormability. See the method + description for details. + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - limit (float): - [Output Only] Quota limit for this metric. + 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. - This field is a member of `oneof`_ ``_limit``. - metric (str): - [Output Only] Name of the quota metric. Check the Metric - enum for the list of possible values. + 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 ``:``. - This field is a member of `oneof`_ ``_metric``. - owner (str): - [Output Only] Owning resource. This is the resource on which - this quota is applied. + For example, if you are filtering Compute Engine instances, + you can exclude instances named ``example-instance`` by + specifying ``name != example-instance``. - This field is a member of `oneof`_ ``_owner``. - usage (float): - [Output Only] Current usage of this metric. + The ``:*`` comparison can be used to test whether a key has + been defined. For example, to find all objects with + ``owner`` label use: - This field is a member of `oneof`_ ``_usage``. - """ + :: - class Metric(proto.Enum): - r"""[Output Only] Name of the quota metric. + labels.owner:* - Values: - UNDEFINED_METRIC (0): - A value indicating that the enum field is not - set. - A2_CPUS (153206585): - No description available. - AFFINITY_GROUPS (108303563): - No description available. - AUTOSCALERS (471248988): - No description available. - BACKEND_BUCKETS (137626846): - No description available. - BACKEND_SERVICES (269623753): - No description available. - C2D_CPUS (508182517): - No description available. - C2_CPUS (317601211): - No description available. - C3_CPUS (346230362): - No description available. - COMMITMENTS (456141790): - No description available. - COMMITTED_A2_CPUS (59330902): - No description available. - COMMITTED_C2D_CPUS (282390904): - No description available. - COMMITTED_C2_CPUS (223725528): - No description available. - COMMITTED_C3_CPUS (252354679): - No description available. - COMMITTED_CPUS (292394702): - No description available. - COMMITTED_E2_CPUS (388120154): - No description available. - COMMITTED_LICENSES (357606869): - No description available. - COMMITTED_LOCAL_SSD_TOTAL_GB (308393480): - No description available. - COMMITTED_M3_CPUS (585985): - No description available. - COMMITTED_MEMORY_OPTIMIZED_CPUS (489057886): - No description available. - COMMITTED_N2A_CPUS (40064304): - No description available. - COMMITTED_N2D_CPUS (125951757): - No description available. - COMMITTED_N2_CPUS (322589603): - No description available. - COMMITTED_NVIDIA_A100_80GB_GPUS (464326565): - No description available. - COMMITTED_NVIDIA_A100_GPUS (375799445): - No description available. - COMMITTED_NVIDIA_H100_GPUS (71649180): - No description available. - COMMITTED_NVIDIA_K80_GPUS (3857188): - No description available. - COMMITTED_NVIDIA_L4_GPUS (19163645): - No description available. - COMMITTED_NVIDIA_P100_GPUS (107528100): - No description available. - COMMITTED_NVIDIA_P4_GPUS (347952897): - No description available. - COMMITTED_NVIDIA_T4_GPUS (139871237): - No description available. - COMMITTED_NVIDIA_V100_GPUS (219562): - No description available. - COMMITTED_T2A_CPUS (296378986): - No description available. - COMMITTED_T2D_CPUS (382266439): - No description available. - COMMITTED_Z3_CPUS (263844686): - No description available. - CPUS (2075595): - Guest CPUs - CPUS_ALL_REGIONS (470911149): - No description available. - DISKS_TOTAL_GB (353520543): - No description available. - E2_CPUS (481995837): - No description available. - EXTERNAL_MANAGED_FORWARDING_RULES (150790089): - No description available. - EXTERNAL_NETWORK_LB_FORWARDING_RULES (374298265): - No description available. - EXTERNAL_PROTOCOL_FORWARDING_RULES (63478888): - No description available. - EXTERNAL_VPN_GATEWAYS (272457134): - No description available. - FIREWALLS (374485843): - No description available. - FORWARDING_RULES (432668949): - No description available. - GLOBAL_EXTERNAL_MANAGED_BACKEND_SERVICES (164566753): - No description available. - GLOBAL_EXTERNAL_MANAGED_FORWARDING_RULES (327611949): - No description available. - GLOBAL_EXTERNAL_PROXY_LB_BACKEND_SERVICES (400256169): - No description available. - GLOBAL_INTERNAL_ADDRESSES (42738332): - No description available. - GLOBAL_INTERNAL_MANAGED_BACKEND_SERVICES (256608303): - No description available. - GLOBAL_INTERNAL_TRAFFIC_DIRECTOR_BACKEND_SERVICES (323514196): - No description available. - GPUS_ALL_REGIONS (39387177): - No description available. - HDB_TOTAL_GB (319316271): - No description available. - HDB_TOTAL_IOPS (309720317): - No description available. - HDB_TOTAL_THROUGHPUT (20981374): - No description available. - HEALTH_CHECKS (289347502): - No description available. - IMAGES (15562360): - No description available. - INSTANCES (131337822): - No description available. - INSTANCE_GROUPS (355919038): - No description available. - INSTANCE_GROUP_MANAGERS (101798192): - No description available. - INSTANCE_TEMPLATES (226188271): - No description available. - INTERCONNECTS (415204741): - No description available. - INTERCONNECT_ATTACHMENTS_PER_REGION (159968086): - No description available. - INTERCONNECT_ATTACHMENTS_TOTAL_MBPS (425090419): - No description available. - INTERCONNECT_TOTAL_GBPS (285341866): - No description available. - INTERNAL_ADDRESSES (197899392): - No description available. - INTERNAL_TRAFFIC_DIRECTOR_FORWARDING_RULES (266433668): - No description available. - IN_PLACE_SNAPSHOTS (151359133): - No description available. - IN_USE_ADDRESSES (402125072): - No description available. - IN_USE_BACKUP_SCHEDULES (32786705): - No description available. - IN_USE_SNAPSHOT_SCHEDULES (462104083): - No description available. - LOCAL_SSD_TOTAL_GB (330878021): - No description available. - M1_CPUS (37203366): - No description available. - M2_CPUS (65832517): - No description available. - M3_CPUS (94461668): - No description available. - MACHINE_IMAGES (446986640): - No description available. - N2A_CPUS (265855917): - No description available. - N2D_CPUS (351743370): - No description available. - N2_CPUS (416465286): - No description available. - NETWORKS (485481477): - No description available. - NETWORK_ATTACHMENTS (149028575): - No description available. - NETWORK_ENDPOINT_GROUPS (102144909): - No description available. - NETWORK_FIREWALL_POLICIES (101117374): - No description available. - NET_LB_SECURITY_POLICIES_PER_REGION (157892269): - No description available. - NET_LB_SECURITY_POLICY_RULES_PER_REGION (356090931): - No description available. - NET_LB_SECURITY_POLICY_RULE_ATTRIBUTES_PER_REGION (311243888): - No description available. - NODE_GROUPS (24624817): - No description available. - NODE_TEMPLATES (474896668): - No description available. - NVIDIA_A100_80GB_GPUS (286389320): - No description available. - NVIDIA_A100_GPUS (504872978): - No description available. - NVIDIA_K80_GPUS (163886599): - No description available. - NVIDIA_L4_GPUS (491923130): - No description available. - NVIDIA_P100_GPUS (236601633): - No description available. - NVIDIA_P100_VWS_GPUS (213970574): - No description available. - NVIDIA_P4_GPUS (283841470): - No description available. - NVIDIA_P4_VWS_GPUS (528296619): - No description available. - NVIDIA_T4_GPUS (75759810): - No description available. - NVIDIA_T4_VWS_GPUS (319813039): - No description available. - NVIDIA_V100_GPUS (129293095): - No description available. - PACKET_MIRRORINGS (15578407): - No description available. - PD_EXTREME_TOTAL_PROVISIONED_IOPS (69593965): - No description available. - PREEMPTIBLE_CPUS (251184841): - No description available. - PREEMPTIBLE_LOCAL_SSD_GB (260819336): - No description available. - PREEMPTIBLE_NVIDIA_A100_80GB_GPUS (151942410): - No description available. - PREEMPTIBLE_NVIDIA_A100_GPUS (68832784): - No description available. - PREEMPTIBLE_NVIDIA_H100_GPUS (301553431): - No description available. - PREEMPTIBLE_NVIDIA_K80_GPUS (374960201): - No description available. - PREEMPTIBLE_NVIDIA_L4_GPUS (100408376): - No description available. - PREEMPTIBLE_NVIDIA_P100_GPUS (337432351): - No description available. - PREEMPTIBLE_NVIDIA_P100_VWS_GPUS (313544076): - No description available. - PREEMPTIBLE_NVIDIA_P4_GPUS (429197628): - No description available. - PREEMPTIBLE_NVIDIA_P4_VWS_GPUS (252981545): - No description available. - PREEMPTIBLE_NVIDIA_T4_GPUS (221115968): - No description available. - PREEMPTIBLE_NVIDIA_T4_VWS_GPUS (44497965): - No description available. - PREEMPTIBLE_NVIDIA_V100_GPUS (230123813): - No description available. - PREEMPTIBLE_TPU_LITE_DEVICE_V5 (174262523): - No description available. - PREEMPTIBLE_TPU_LITE_PODSLICE_V5 (112281796): - No description available. - PREEMPTIBLE_TPU_PODSLICE_V4 (425541132): - No description available. - PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK (231164291): - No description available. - PSC_INTERNAL_LB_FORWARDING_RULES (169005435): - No description available. - PUBLIC_ADVERTISED_PREFIXES (471371980): - No description available. - PUBLIC_DELEGATED_PREFIXES (532465974): - No description available. - REGIONAL_AUTOSCALERS (29363772): - No description available. - REGIONAL_EXTERNAL_MANAGED_BACKEND_SERVICES (4240989): - No description available. - REGIONAL_EXTERNAL_NETWORK_LB_BACKEND_SERVICES (409564525): - No description available. - REGIONAL_INSTANCE_GROUP_MANAGERS (37543696): - No description available. - REGIONAL_INTERNAL_LB_BACKEND_SERVICES (137983760): - No description available. - REGIONAL_INTERNAL_MANAGED_BACKEND_SERVICES (96282539): - No description available. - REGIONAL_INTERNAL_TRAFFIC_DIRECTOR_BACKEND_SERVICES (483162968): - No description available. - RESERVATIONS (32644647): - No description available. - RESOURCE_POLICIES (83955297): - No description available. - ROUTERS (493018666): - No description available. - ROUTES (275680074): - No description available. - SECURITY_POLICIES (189518703): - No description available. - SECURITY_POLICIES_PER_REGION (249041734): - No description available. - SECURITY_POLICY_ADVANCED_RULES_PER_REGION (371815341): - No description available. - SECURITY_POLICY_CEVAL_RULES (470815689): - No description available. - SECURITY_POLICY_RULES (203549225): - No description available. - SECURITY_POLICY_RULES_PER_REGION (126510156): - No description available. - SERVICE_ATTACHMENTS (471521510): - No description available. - SNAPSHOTS (343405327): - The total number of snapshots allowed for a - single project. - SSD_TOTAL_GB (161732561): - No description available. - SSL_CERTIFICATES (378372399): - No description available. - SSL_POLICIES (523254339): - No description available. - STATIC_ADDRESSES (93624049): - No description available. - STATIC_BYOIP_ADDRESSES (275809649): - No description available. - STATIC_EXTERNAL_IPV6_ADDRESS_RANGES (472346774): - No description available. - SUBNETWORKS (421330469): - No description available. - T2A_CPUS (522170599): - No description available. - T2D_CPUS (71187140): - No description available. - TARGET_HTTPS_PROXIES (219522506): - No description available. - TARGET_HTTP_PROXIES (164117155): - No description available. - TARGET_INSTANCES (284519728): - No description available. - TARGET_POOLS (348261257): - No description available. - TARGET_SSL_PROXIES (159216235): - No description available. - TARGET_TCP_PROXIES (182243136): - No description available. - TARGET_VPN_GATEWAYS (75029928): - No description available. - TPU_LITE_DEVICE_V5 (449577597): - No description available. - TPU_LITE_PODSLICE_V5 (12708294): - No description available. - TPU_PODSLICE_V4 (214467530): - No description available. - URL_MAPS (378660743): - No description available. - VARIABLE_IPV6_PUBLIC_DELEGATED_PREFIXES (128400161): - No description available. - VPN_GATEWAYS (35620282): - No description available. - VPN_TUNNELS (104327296): - No description available. - XPN_SERVICE_PROJECTS (95191981): - No description available. - """ + 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. - UNDEFINED_METRIC = 0 - A2_CPUS = 153206585 - AFFINITY_GROUPS = 108303563 - AUTOSCALERS = 471248988 - BACKEND_BUCKETS = 137626846 - BACKEND_SERVICES = 269623753 - C2D_CPUS = 508182517 - C2_CPUS = 317601211 - C3_CPUS = 346230362 - COMMITMENTS = 456141790 - COMMITTED_A2_CPUS = 59330902 - COMMITTED_C2D_CPUS = 282390904 - COMMITTED_C2_CPUS = 223725528 - COMMITTED_C3_CPUS = 252354679 - COMMITTED_CPUS = 292394702 - COMMITTED_E2_CPUS = 388120154 - COMMITTED_LICENSES = 357606869 - COMMITTED_LOCAL_SSD_TOTAL_GB = 308393480 - COMMITTED_M3_CPUS = 585985 - COMMITTED_MEMORY_OPTIMIZED_CPUS = 489057886 - COMMITTED_N2A_CPUS = 40064304 - COMMITTED_N2D_CPUS = 125951757 - COMMITTED_N2_CPUS = 322589603 - COMMITTED_NVIDIA_A100_80GB_GPUS = 464326565 - COMMITTED_NVIDIA_A100_GPUS = 375799445 - COMMITTED_NVIDIA_H100_GPUS = 71649180 - COMMITTED_NVIDIA_K80_GPUS = 3857188 - COMMITTED_NVIDIA_L4_GPUS = 19163645 - COMMITTED_NVIDIA_P100_GPUS = 107528100 - COMMITTED_NVIDIA_P4_GPUS = 347952897 - COMMITTED_NVIDIA_T4_GPUS = 139871237 - COMMITTED_NVIDIA_V100_GPUS = 219562 - COMMITTED_T2A_CPUS = 296378986 - COMMITTED_T2D_CPUS = 382266439 - COMMITTED_Z3_CPUS = 263844686 - CPUS = 2075595 - CPUS_ALL_REGIONS = 470911149 - DISKS_TOTAL_GB = 353520543 - E2_CPUS = 481995837 - EXTERNAL_MANAGED_FORWARDING_RULES = 150790089 - EXTERNAL_NETWORK_LB_FORWARDING_RULES = 374298265 - EXTERNAL_PROTOCOL_FORWARDING_RULES = 63478888 - EXTERNAL_VPN_GATEWAYS = 272457134 - FIREWALLS = 374485843 - FORWARDING_RULES = 432668949 - GLOBAL_EXTERNAL_MANAGED_BACKEND_SERVICES = 164566753 - GLOBAL_EXTERNAL_MANAGED_FORWARDING_RULES = 327611949 - GLOBAL_EXTERNAL_PROXY_LB_BACKEND_SERVICES = 400256169 - GLOBAL_INTERNAL_ADDRESSES = 42738332 - GLOBAL_INTERNAL_MANAGED_BACKEND_SERVICES = 256608303 - GLOBAL_INTERNAL_TRAFFIC_DIRECTOR_BACKEND_SERVICES = 323514196 - GPUS_ALL_REGIONS = 39387177 - HDB_TOTAL_GB = 319316271 - HDB_TOTAL_IOPS = 309720317 - HDB_TOTAL_THROUGHPUT = 20981374 - HEALTH_CHECKS = 289347502 - IMAGES = 15562360 - INSTANCES = 131337822 - INSTANCE_GROUPS = 355919038 - INSTANCE_GROUP_MANAGERS = 101798192 - INSTANCE_TEMPLATES = 226188271 - INTERCONNECTS = 415204741 - INTERCONNECT_ATTACHMENTS_PER_REGION = 159968086 - INTERCONNECT_ATTACHMENTS_TOTAL_MBPS = 425090419 - INTERCONNECT_TOTAL_GBPS = 285341866 - INTERNAL_ADDRESSES = 197899392 - INTERNAL_TRAFFIC_DIRECTOR_FORWARDING_RULES = 266433668 - IN_PLACE_SNAPSHOTS = 151359133 - IN_USE_ADDRESSES = 402125072 - IN_USE_BACKUP_SCHEDULES = 32786705 - IN_USE_SNAPSHOT_SCHEDULES = 462104083 - LOCAL_SSD_TOTAL_GB = 330878021 - M1_CPUS = 37203366 - M2_CPUS = 65832517 - M3_CPUS = 94461668 - MACHINE_IMAGES = 446986640 - N2A_CPUS = 265855917 - N2D_CPUS = 351743370 - N2_CPUS = 416465286 - NETWORKS = 485481477 - NETWORK_ATTACHMENTS = 149028575 - NETWORK_ENDPOINT_GROUPS = 102144909 - NETWORK_FIREWALL_POLICIES = 101117374 - NET_LB_SECURITY_POLICIES_PER_REGION = 157892269 - NET_LB_SECURITY_POLICY_RULES_PER_REGION = 356090931 - NET_LB_SECURITY_POLICY_RULE_ATTRIBUTES_PER_REGION = 311243888 - NODE_GROUPS = 24624817 - NODE_TEMPLATES = 474896668 - NVIDIA_A100_80GB_GPUS = 286389320 - NVIDIA_A100_GPUS = 504872978 - NVIDIA_K80_GPUS = 163886599 - NVIDIA_L4_GPUS = 491923130 - NVIDIA_P100_GPUS = 236601633 - NVIDIA_P100_VWS_GPUS = 213970574 - NVIDIA_P4_GPUS = 283841470 - NVIDIA_P4_VWS_GPUS = 528296619 - NVIDIA_T4_GPUS = 75759810 - NVIDIA_T4_VWS_GPUS = 319813039 - NVIDIA_V100_GPUS = 129293095 - PACKET_MIRRORINGS = 15578407 - PD_EXTREME_TOTAL_PROVISIONED_IOPS = 69593965 - PREEMPTIBLE_CPUS = 251184841 - PREEMPTIBLE_LOCAL_SSD_GB = 260819336 - PREEMPTIBLE_NVIDIA_A100_80GB_GPUS = 151942410 - PREEMPTIBLE_NVIDIA_A100_GPUS = 68832784 - PREEMPTIBLE_NVIDIA_H100_GPUS = 301553431 - PREEMPTIBLE_NVIDIA_K80_GPUS = 374960201 - PREEMPTIBLE_NVIDIA_L4_GPUS = 100408376 - PREEMPTIBLE_NVIDIA_P100_GPUS = 337432351 - PREEMPTIBLE_NVIDIA_P100_VWS_GPUS = 313544076 - PREEMPTIBLE_NVIDIA_P4_GPUS = 429197628 - PREEMPTIBLE_NVIDIA_P4_VWS_GPUS = 252981545 - PREEMPTIBLE_NVIDIA_T4_GPUS = 221115968 - PREEMPTIBLE_NVIDIA_T4_VWS_GPUS = 44497965 - PREEMPTIBLE_NVIDIA_V100_GPUS = 230123813 - PREEMPTIBLE_TPU_LITE_DEVICE_V5 = 174262523 - PREEMPTIBLE_TPU_LITE_PODSLICE_V5 = 112281796 - PREEMPTIBLE_TPU_PODSLICE_V4 = 425541132 - PSC_ILB_CONSUMER_FORWARDING_RULES_PER_PRODUCER_NETWORK = 231164291 - PSC_INTERNAL_LB_FORWARDING_RULES = 169005435 - PUBLIC_ADVERTISED_PREFIXES = 471371980 - PUBLIC_DELEGATED_PREFIXES = 532465974 - REGIONAL_AUTOSCALERS = 29363772 - REGIONAL_EXTERNAL_MANAGED_BACKEND_SERVICES = 4240989 - REGIONAL_EXTERNAL_NETWORK_LB_BACKEND_SERVICES = 409564525 - REGIONAL_INSTANCE_GROUP_MANAGERS = 37543696 - REGIONAL_INTERNAL_LB_BACKEND_SERVICES = 137983760 - REGIONAL_INTERNAL_MANAGED_BACKEND_SERVICES = 96282539 - REGIONAL_INTERNAL_TRAFFIC_DIRECTOR_BACKEND_SERVICES = 483162968 - RESERVATIONS = 32644647 - RESOURCE_POLICIES = 83955297 - ROUTERS = 493018666 - ROUTES = 275680074 - SECURITY_POLICIES = 189518703 - SECURITY_POLICIES_PER_REGION = 249041734 - SECURITY_POLICY_ADVANCED_RULES_PER_REGION = 371815341 - SECURITY_POLICY_CEVAL_RULES = 470815689 - SECURITY_POLICY_RULES = 203549225 - SECURITY_POLICY_RULES_PER_REGION = 126510156 - SERVICE_ATTACHMENTS = 471521510 - SNAPSHOTS = 343405327 - SSD_TOTAL_GB = 161732561 - SSL_CERTIFICATES = 378372399 - SSL_POLICIES = 523254339 - STATIC_ADDRESSES = 93624049 - STATIC_BYOIP_ADDRESSES = 275809649 - STATIC_EXTERNAL_IPV6_ADDRESS_RANGES = 472346774 - SUBNETWORKS = 421330469 - T2A_CPUS = 522170599 - T2D_CPUS = 71187140 - TARGET_HTTPS_PROXIES = 219522506 - TARGET_HTTP_PROXIES = 164117155 - TARGET_INSTANCES = 284519728 - TARGET_POOLS = 348261257 - TARGET_SSL_PROXIES = 159216235 - TARGET_TCP_PROXIES = 182243136 - TARGET_VPN_GATEWAYS = 75029928 - TPU_LITE_DEVICE_V5 = 449577597 - TPU_LITE_PODSLICE_V5 = 12708294 - TPU_PODSLICE_V4 = 214467530 - URL_MAPS = 378660743 - VARIABLE_IPV6_PUBLIC_DELEGATED_PREFIXES = 128400161 - VPN_GATEWAYS = 35620282 - VPN_TUNNELS = 104327296 - XPN_SERVICE_PROJECTS = 95191981 + To filter on multiple expressions, provide each separate + expression within parentheses. For example: - limit: float = proto.Field( - proto.DOUBLE, - number=102976443, + :: + + (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. + query_formability_request_resource (google.cloud.compute_v1.types.QueryFormabilityRequest): + The body resource for this request + zone (str): + The name of thezone where the + request is located. Zone name should conform to + RFC1035. + """ + + filter: str = proto.Field( + proto.STRING, + number=336120696, optional=True, ) - metric: str = proto.Field( + max_results: int = proto.Field( + proto.UINT32, + number=54715419, + optional=True, + ) + order_by: str = proto.Field( proto.STRING, - number=533067184, + number=160562920, optional=True, ) - owner: str = proto.Field( + page_token: str = proto.Field( proto.STRING, - number=106164915, + number=19994697, optional=True, ) - usage: float = proto.Field( - proto.DOUBLE, - number=111574433, + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + query_formability_request_resource: "QueryFormabilityRequest" = proto.Field( + proto.MESSAGE, + number=224043790, + message="QueryFormabilityRequest", + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + + +class QueryFormabilityRequest(proto.Message): + r"""Query formability of a given set of reservation subblocks. + + Attributes: + subblocks (MutableSequence[str]): + Explicit list of fully qualified reservation + subblock resource URLs. Both full and relative + URIs are supported. + """ + + subblocks: MutableSequence[str] = proto.RepeatedField( + proto.STRING, + number=36363206, + ) + + +class QueryFormabilityResponse(proto.Message): + r"""Response message for + AcceleratorInterconnects.QueryFormability. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + items (MutableSequence[google.cloud.compute_v1.types.PartitionFormability]): + Flattened collection of hierarchical + partitions and their formability across all + requested subblocks. + next_page_token (str): + 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``. + """ + + @property + def raw_page(self): + return self + + items: MutableSequence["PartitionFormability"] = proto.RepeatedField( + proto.MESSAGE, + number=100526016, + message="PartitionFormability", + ) + next_page_token: str = proto.Field( + proto.STRING, + number=79797525, optional=True, ) @@ -120876,8 +121308,6 @@ class Region(proto.Message): only if fetching of the ``quotas`` field fails. This field is a member of `oneof`_ ``_quota_status_warning``. - quotas (MutableSequence[google.cloud.compute_v1.types.Quota]): - [Output Only] Quotas assigned to this region. self_link (str): [Output Only] Server-defined URL for the resource. @@ -120950,11 +121380,6 @@ class Status(proto.Enum): optional=True, message="QuotaStatusWarning", ) - quotas: MutableSequence["Quota"] = proto.RepeatedField( - proto.MESSAGE, - number=125341947, - message="Quota", - ) self_link: str = proto.Field( proto.STRING, number=456214797, @@ -124806,6 +125231,11 @@ class ReservationBlock(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + block_status (google.cloud.compute_v1.types.ReservationBlockBlockStatus): + Output only. [Output Only] Resource status for the + reservation block. + + This field is a member of `oneof`_ ``_block_status``. count (int): Output only. [Output Only] The number of resources that are allocated in this reservation block. @@ -124842,6 +125272,12 @@ class ReservationBlock(proto.Message): Alwayscompute#reservationBlock for reservation blocks. This field is a member of `oneof`_ ``_kind``. + machine_count (int): + Output only. [Output Only] The number of machines in the + reservation block. Only populated for families where machine + to host ratio is not 1:1 such as TPU8i. + + This field is a member of `oneof`_ ``_machine_count``. name (str): Output only. [Output Only] The name of this reservation block generated by Google Compute Engine. The name must be @@ -124918,6 +125354,12 @@ class Status(proto.Enum): INVALID = 530283991 READY = 77848963 + block_status: "ReservationBlockBlockStatus" = proto.Field( + proto.MESSAGE, + number=472334308, + optional=True, + message="ReservationBlockBlockStatus", + ) count: int = proto.Field( proto.INT32, number=94851343, @@ -124954,6 +125396,11 @@ class Status(proto.Enum): number=3292052, optional=True, ) + machine_count: int = proto.Field( + proto.INT32, + number=63727383, + optional=True, + ) name: str = proto.Field( proto.STRING, number=3373707, @@ -125003,6 +125450,81 @@ class Status(proto.Enum): ) +class ReservationBlockBlockDetailedHealthInfo(proto.Message): + r"""Detailed health information for the reservation block. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + critical_sub_block_count (int): + Output only. The number of subBlocks that are + critical. Critical subBlocks are completely + unhealthy and cannot be used. + + This field is a member of `oneof`_ ``_critical_sub_block_count``. + degraded_sub_block_count (int): + Output only. The number of subBlocks that are + degraded. Degraded subBlocks are within SLO and + can be used with some performance degradation. + + This field is a member of `oneof`_ ``_degraded_sub_block_count``. + healthy_sub_block_count (int): + Output only. The number of subBlocks that are + healthy. Healthy subBlocks are within SLO and + can be used without performance degradation. + + This field is a member of `oneof`_ ``_healthy_sub_block_count``. + unhealthy_sub_block_count (int): + Output only. The number of subBlocks that are + unhealthy. Unhealthy subBlocks cannot be used in + full. + + This field is a member of `oneof`_ ``_unhealthy_sub_block_count``. + """ + + critical_sub_block_count: int = proto.Field( + proto.INT32, + number=209290942, + optional=True, + ) + degraded_sub_block_count: int = proto.Field( + proto.INT32, + number=458044493, + optional=True, + ) + healthy_sub_block_count: int = proto.Field( + proto.INT32, + number=5348540, + optional=True, + ) + unhealthy_sub_block_count: int = proto.Field( + proto.INT32, + number=319828483, + optional=True, + ) + + +class ReservationBlockBlockStatus(proto.Message): + r"""[Output Only] Status for the reservation block. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + block_detailed_health_info (google.cloud.compute_v1.types.ReservationBlockBlockDetailedHealthInfo): + Output only. Detailed health information for + the reservation block. + + This field is a member of `oneof`_ ``_block_detailed_health_info``. + """ + + block_detailed_health_info: "ReservationBlockBlockDetailedHealthInfo" = proto.Field( + proto.MESSAGE, + number=369360916, + optional=True, + message="ReservationBlockBlockDetailedHealthInfo", + ) + + class ReservationBlockHealthInfo(proto.Message): r"""Health information for the reservation block. @@ -125153,6 +125675,12 @@ class ReservationBlockPhysicalTopologyInstancePhysicalHostTopology(proto.Message Host hash for a given instance This field is a member of `oneof`_ ``_host``. + machine (str): + Machine hash for a given instance. Only + populated for families where machine-to-host + ratio is not 1:1 such as TPU8i. + + This field is a member of `oneof`_ ``_machine``. sub_block (str): Sub block hash for a given instance @@ -125164,6 +125692,11 @@ class ReservationBlockPhysicalTopologyInstancePhysicalHostTopology(proto.Message number=3208616, optional=True, ) + machine: str = proto.Field( + proto.STRING, + number=288441415, + optional=True, + ) sub_block: str = proto.Field( proto.STRING, number=478033358, @@ -125780,6 +126313,12 @@ class ReservationSubBlock(proto.Message): Alwayscompute#reservationSubBlock for reservation subBlocks. This field is a member of `oneof`_ ``_kind``. + machine_count (int): + Output only. [Output Only] The number of machines in the + reservation subBlock. Only populated for families where + machine to host ratio is not 1:1 such as TPU8i. + + This field is a member of `oneof`_ ``_machine_count``. name (str): Output only. [Output Only] The name of this reservation subBlock generated by Google Compute Engine. The name must @@ -125813,6 +126352,11 @@ class ReservationSubBlock(proto.Message): values. This field is a member of `oneof`_ ``_status``. + sub_block_status (google.cloud.compute_v1.types.ReservationSubBlockSubBlockStatus): + Output only. [Output Only] Resource status for the + reservation subBlock. + + This field is a member of `oneof`_ ``_sub_block_status``. zone (str): Output only. [Output Only] Zone in which the reservation subBlock resides. @@ -125888,6 +126432,11 @@ class Status(proto.Enum): number=3292052, optional=True, ) + machine_count: int = proto.Field( + proto.INT32, + number=63727383, + optional=True, + ) name: str = proto.Field( proto.STRING, number=3373707, @@ -125920,6 +126469,12 @@ class Status(proto.Enum): number=181260274, optional=True, ) + sub_block_status: "ReservationSubBlockSubBlockStatus" = proto.Field( + proto.MESSAGE, + number=461116291, + optional=True, + message="ReservationSubBlockSubBlockStatus", + ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -126048,6 +126603,104 @@ class ReservationSubBlockPhysicalTopology(proto.Message): ) +class ReservationSubBlockSubBlockDetailedHealthInfo(proto.Message): + r"""Detailed health information for the reservation subBlock. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + detailed_health_status (str): + Output only. The detailed health status of + the reservation subBlock. Check the + DetailedHealthStatus enum for the list of + possible values. + + This field is a member of `oneof`_ ``_detailed_health_status``. + healthy_host_count (int): + Output only. The number of healthy hosts in + the reservation subBlock. + + This field is a member of `oneof`_ ``_healthy_host_count``. + unhealthy_host_count (int): + Output only. The number of unhealthy hosts in + the reservation subBlock. Unhealthy hosts cannot + be used in full. + + This field is a member of `oneof`_ ``_unhealthy_host_count``. + """ + + class DetailedHealthStatus(proto.Enum): + r"""Output only. The detailed health status of the reservation + subBlock. + + Values: + UNDEFINED_DETAILED_HEALTH_STATUS (0): + A value indicating that the enum field is not + set. + DETAILED_HEALTH_STATUS_CRITICAL (218729944): + The reservation subBlock is completely + unhealthy and cannot be used. + DETAILED_HEALTH_STATUS_DEGRADED (28326247): + The reservation subBlock is within SLO and + can be used with some performance degradation. + DETAILED_HEALTH_STATUS_HEALTHY (98862116): + The reservation subBlock is healthy. + DETAILED_HEALTH_STATUS_UNHEALTHY (310902187): + The reservation subBlock is unhealthy. This + can be caused by host failures, or network + infrastructure failures. + DETAILED_HEALTH_STATUS_UNSPECIFIED (163455550): + The health status of the reservation subBlock + is unspecified. + """ + + UNDEFINED_DETAILED_HEALTH_STATUS = 0 + DETAILED_HEALTH_STATUS_CRITICAL = 218729944 + DETAILED_HEALTH_STATUS_DEGRADED = 28326247 + DETAILED_HEALTH_STATUS_HEALTHY = 98862116 + DETAILED_HEALTH_STATUS_UNHEALTHY = 310902187 + DETAILED_HEALTH_STATUS_UNSPECIFIED = 163455550 + + detailed_health_status: str = proto.Field( + proto.STRING, + number=255319526, + optional=True, + ) + healthy_host_count: int = proto.Field( + proto.INT32, + number=40739738, + optional=True, + ) + unhealthy_host_count: int = proto.Field( + proto.INT32, + number=513449459, + optional=True, + ) + + +class ReservationSubBlockSubBlockStatus(proto.Message): + r"""[Output Only] Status for the reservation subBlock. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + sub_block_detailed_health_info (google.cloud.compute_v1.types.ReservationSubBlockSubBlockDetailedHealthInfo): + Output only. Detailed health information for + the reservation subBlock. + + This field is a member of `oneof`_ ``_sub_block_detailed_health_info``. + """ + + sub_block_detailed_health_info: "ReservationSubBlockSubBlockDetailedHealthInfo" = ( + proto.Field( + proto.MESSAGE, + number=439521651, + optional=True, + message="ReservationSubBlockSubBlockDetailedHealthInfo", + ) + ) + + class ReservationSubBlocksGetResponse(proto.Message): r""" @@ -126288,6 +126941,15 @@ class Behavior(proto.Enum): No description available. GPU_ERROR (198817909): The subBlock experienced a GPU error. + NVSWITCH_FAULT_CONTROLLER_ERROR (250941637): + The subBlock experienced an NVSwitch + controller error. + NVSWITCH_FAULT_DEGRADED_BANDWIDTH (202741248): + The subBlock experienced NVSwitch degraded + bandwidth. + NVSWITCH_FAULT_SWITCH_ERROR (287636061): + The subBlock experienced an NVSwitch switch + error. PERFORMANCE (135701520): The subBlock experienced performance issues. SILENT_DATA_CORRUPTION (111360678): @@ -126300,6 +126962,9 @@ class Behavior(proto.Enum): UNDEFINED_BEHAVIOR = 0 FAULT_BEHAVIOR_UNSPECIFIED = 447660743 GPU_ERROR = 198817909 + NVSWITCH_FAULT_CONTROLLER_ERROR = 250941637 + NVSWITCH_FAULT_DEGRADED_BANDWIDTH = 202741248 + NVSWITCH_FAULT_SWITCH_ERROR = 287636061 PERFORMANCE = 135701520 SILENT_DATA_CORRUPTION = 111360678 SWITCH_FAILURE = 254909279 @@ -126505,10 +127170,43 @@ class ResetInstanceRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. + reset_mode (str): + Mode of reset operation. Defaults to HARD_RESET if not + provided. Check the ResetMode enum for the list of possible + values. + + This field is a member of `oneof`_ ``_reset_mode``. zone (str): The name of the zone for this request. """ + class ResetMode(proto.Enum): + r"""Mode of reset operation. Defaults to HARD_RESET if not provided. + + Values: + UNDEFINED_RESET_MODE (0): + A value indicating that the enum field is not + set. + HARD_RESET (336635099): + Performs a hard reset on the instance. This + immediately restarts the instance without + gracefully shutting down the guest operating + system. + POWER_CYCLE (80319724): + Performs a machine-level power cycle. + RESET_MODE_UNSPECIFIED (159298443): + Default value. Defaults to HARD_RESET. + SOFT_RESET (516697306): + Sends a graceful reset command to the guest operating system + (e.g., equivalent to running ``sudo reboot``). + """ + + UNDEFINED_RESET_MODE = 0 + HARD_RESET = 336635099 + POWER_CYCLE = 80319724 + RESET_MODE_UNSPECIFIED = 159298443 + SOFT_RESET = 516697306 + instance: str = proto.Field( proto.STRING, number=18257045, @@ -126522,6 +127220,11 @@ class ResetInstanceRequest(proto.Message): number=37109963, optional=True, ) + reset_mode: str = proto.Field( + proto.STRING, + number=470863507, + optional=True, + ) zone: str = proto.Field( proto.STRING, number=3744684, @@ -132851,11 +133554,16 @@ class RouterNatRule(proto.Message): ``destination.ip == '1.1.0.1' || destination.ip == '8.8.8.8'`` - The following example is a valid match expression for + The following examples are valid match expressions for private NAT: + (NAT 44) ``nexthop.hub == '//networkconnectivity.googleapis.com/projects/my-project/locations/global/hubs/hub-1'`` + ``nexthop.is_hybrid`` + + (NAT 64) ``isIPv6(source.ip)`` + This field is a member of `oneof`_ ``_match``. rule_number (int): An integer uniquely identifying a rule in the @@ -133134,6 +133842,11 @@ class RouterStatusBgpPeerStatus(proto.Message): bfd_status (google.cloud.compute_v1.types.BfdStatus): This field is a member of `oneof`_ ``_bfd_status``. + depreferenced (bool): + Output only. [Output Only] Indicates whether the BGP peer is + in a depreferenced state. + + This field is a member of `oneof`_ ``_depreferenced``. enable_ipv4 (bool): Output only. Enable IPv4 traffic over BGP Peer. It is enabled by default if the @@ -133297,6 +134010,11 @@ class StatusReason(proto.Enum): optional=True, message="BfdStatus", ) + depreferenced: bool = proto.Field( + proto.BOOL, + number=182429640, + optional=True, + ) enable_ipv4: bool = proto.Field( proto.BOOL, number=181467937, @@ -135240,6 +135958,11 @@ class SecurityPolicy(proto.Message): except the last character, which cannot be a dash. This field is a member of `oneof`_ ``_name``. + params (google.cloud.compute_v1.types.SecurityPolicyParams): + Input only. [Input Only] Additional params passed with the + request, but not persisted as part of resource payload. + + This field is a member of `oneof`_ ``_params``. parent (str): Output only. [Output Only] The parent of the security policy. @@ -135431,6 +136154,12 @@ class Type(proto.Enum): number=3373707, optional=True, ) + params: "SecurityPolicyParams" = proto.Field( + proto.MESSAGE, + number=78313862, + optional=True, + message="SecurityPolicyParams", + ) parent: str = proto.Field( proto.STRING, number=78317738, @@ -136089,6 +136818,37 @@ def raw_page(self): ) +class SecurityPolicyParams(proto.Message): + r"""Additional security policy parameters. + + Attributes: + resource_manager_tags (MutableMapping[str, str]): + Tag keys/values directly bound to this resource. Tag keys + and values have the same definition as resource manager + tags. The field is allowed for INSERT only. The keys/values + to set on the resource should be specified in either ID { : + } or Namespaced format { : }. For example the following are + valid inputs: + + - {"tagKeys/333" : "tagValues/444", "tagKeys/123" : + "tagValues/456"} + - {"123/environment" : "production", "345/abc" : "xyz"} + Note: + - Invalid combinations of ID & namespaced format is not + supported. For instance: {"123/environment" : + "tagValues/444"} is invalid. + - Inconsistent format is not supported. For instance: + {"tagKeys/333" : "tagValues/444", "123/env" : "prod"} is + invalid. + """ + + resource_manager_tags: MutableMapping[str, str] = proto.MapField( + proto.STRING, + proto.STRING, + number=377671164, + ) + + class SecurityPolicyRecaptchaOptionsConfig(proto.Message): r""" @@ -136665,6 +137425,10 @@ class SecurityPolicyRulePreconfiguredWafConfigExclusion(proto.Message): .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: + request_bodies_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]): + A list of request body fields to be excluded + from inspection during preconfigured WAF + evaluation. request_cookies_to_exclude (MutableSequence[google.cloud.compute_v1.types.SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams]): A list of request cookie names whose value will be excluded from inspection during @@ -136697,6 +137461,13 @@ class SecurityPolicyRulePreconfiguredWafConfigExclusion(proto.Message): This field is a member of `oneof`_ ``_target_rule_set``. """ + request_bodies_to_exclude: MutableSequence[ + "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams" + ] = proto.RepeatedField( + proto.MESSAGE, + number=60453445, + message="SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams", + ) request_cookies_to_exclude: MutableSequence[ "SecurityPolicyRulePreconfiguredWafConfigExclusionFieldParams" ] = proto.RepeatedField( @@ -140481,37 +141252,313 @@ class SetLabelsDiskRequest(proto.Message): ) -class SetLabelsExternalVpnGatewayRequest(proto.Message): - r"""A request message for ExternalVpnGateways.SetLabels. See the - method description for details. - - Attributes: - global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): - The body resource for this request - project (str): - Project ID for this request. - resource (str): - Name or id of the resource for this request. - """ - - global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=319917189, - message="GlobalSetLabelsRequest", - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - resource: str = proto.Field( - proto.STRING, - number=195806222, - ) - - -class SetLabelsForwardingRuleRequest(proto.Message): - r"""A request message for ForwardingRules.SetLabels. See the - method description for details. +class SetLabelsExternalVpnGatewayRequest(proto.Message): + r"""A request message for ExternalVpnGateways.SetLabels. See the + method description for details. + + Attributes: + global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): + The body resource for this request + project (str): + Project ID for this request. + resource (str): + Name or id of the resource for this request. + """ + + global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=319917189, + message="GlobalSetLabelsRequest", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + resource: str = proto.Field( + proto.STRING, + number=195806222, + ) + + +class SetLabelsForwardingRuleRequest(proto.Message): + r"""A request message for ForwardingRules.SetLabels. See the + method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + project (str): + Project ID for this request. + region (str): + The region for this request. + region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): + The body resource for this request + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + resource (str): + Name or id of the resource for this request. + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=259357782, + message="RegionSetLabelsRequest", + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + resource: str = proto.Field( + proto.STRING, + number=195806222, + ) + + +class SetLabelsGlobalAddressRequest(proto.Message): + r"""A request message for GlobalAddresses.SetLabels. See the + method description for details. + + Attributes: + global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): + The body resource for this request + project (str): + Project ID for this request. + resource (str): + Name or id of the resource for this request. + """ + + global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=319917189, + message="GlobalSetLabelsRequest", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + resource: str = proto.Field( + proto.STRING, + number=195806222, + ) + + +class SetLabelsGlobalForwardingRuleRequest(proto.Message): + r"""A request message for GlobalForwardingRules.SetLabels. See + the method description for details. + + Attributes: + global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): + The body resource for this request + project (str): + Project ID for this request. + resource (str): + Name or id of the resource for this request. + """ + + global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=319917189, + message="GlobalSetLabelsRequest", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + resource: str = proto.Field( + proto.STRING, + number=195806222, + ) + + +class SetLabelsImageRequest(proto.Message): + r"""A request message for Images.SetLabels. See the method + description for details. + + Attributes: + global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): + The body resource for this request + project (str): + Project ID for this request. + resource (str): + Name or id of the resource for this request. + """ + + global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=319917189, + message="GlobalSetLabelsRequest", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + resource: str = proto.Field( + proto.STRING, + number=195806222, + ) + + +class SetLabelsInstanceRequest(proto.Message): + r"""A request message for Instances.SetLabels. See the method + description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + instance (str): + Name of the instance scoping this request. + instances_set_labels_request_resource (google.cloud.compute_v1.types.InstancesSetLabelsRequest): + The body resource for this request + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + zone (str): + The name of the zone for this request. + """ + + instance: str = proto.Field( + proto.STRING, + number=18257045, + ) + instances_set_labels_request_resource: "InstancesSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=207749344, + message="InstancesSetLabelsRequest", + ) + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + + +class SetLabelsInstantSnapshotRequest(proto.Message): + r"""A request message for InstantSnapshots.SetLabels. See the + method description for details. + + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + + Attributes: + project (str): + Project ID for this request. + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. + resource (str): + Name or id of the resource for this request. + zone (str): + The name of the zone for this request. + zone_set_labels_request_resource (google.cloud.compute_v1.types.ZoneSetLabelsRequest): + The body resource for this request + """ + + project: str = proto.Field( + proto.STRING, + number=227560217, + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) + resource: str = proto.Field( + proto.STRING, + number=195806222, + ) + zone: str = proto.Field( + proto.STRING, + number=3744684, + ) + zone_set_labels_request_resource: "ZoneSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=364950798, + message="ZoneSetLabelsRequest", + ) + + +class SetLabelsInterconnectAttachmentRequest(proto.Message): + r"""A request message for InterconnectAttachments.SetLabels. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -140573,9 +141620,9 @@ class SetLabelsForwardingRuleRequest(proto.Message): ) -class SetLabelsGlobalAddressRequest(proto.Message): - r"""A request message for GlobalAddresses.SetLabels. See the - method description for details. +class SetLabelsInterconnectRequest(proto.Message): + r"""A request message for Interconnects.SetLabels. See the method + description for details. Attributes: global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): @@ -140601,9 +141648,9 @@ class SetLabelsGlobalAddressRequest(proto.Message): ) -class SetLabelsGlobalForwardingRuleRequest(proto.Message): - r"""A request message for GlobalForwardingRules.SetLabels. See - the method description for details. +class SetLabelsMachineImageRequest(proto.Message): + r"""A request message for MachineImages.SetLabels. See the method + description for details. Attributes: global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): @@ -140629,48 +141676,84 @@ class SetLabelsGlobalForwardingRuleRequest(proto.Message): ) -class SetLabelsImageRequest(proto.Message): - r"""A request message for Images.SetLabels. See the method +class SetLabelsRegionDiskRequest(proto.Message): + r"""A request message for RegionDisks.SetLabels. See the method description for details. + + .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields + Attributes: - global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): - The body resource for this request project (str): Project ID for this request. + region (str): + The region for this request. + region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): + The body resource for this request + request_id (str): + An optional request ID to identify requests. + Specify a unique request ID so that if you must + retry your request, the server will know to + ignore the request if it has already been + completed. + + For example, consider a situation where you make + an initial request and the request times out. If + you make the request again with the same request + ID, the server can check if original operation + with the same request ID was received, and if + so, will ignore the second request. This + prevents clients from accidentally creating + duplicate commitments. + + The request ID must be + a valid UUID with the exception that zero UUID + is not supported + (00000000-0000-0000-0000-000000000000). + + This field is a member of `oneof`_ ``_request_id``. resource (str): Name or id of the resource for this request. """ - global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=319917189, - message="GlobalSetLabelsRequest", - ) project: str = proto.Field( proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=259357782, + message="RegionSetLabelsRequest", + ) + request_id: str = proto.Field( + proto.STRING, + number=37109963, + optional=True, + ) resource: str = proto.Field( proto.STRING, number=195806222, ) -class SetLabelsInstanceRequest(proto.Message): - r"""A request message for Instances.SetLabels. See the method - description for details. +class SetLabelsRegionInstantSnapshotRequest(proto.Message): + r"""A request message for RegionInstantSnapshots.SetLabels. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - instance (str): - Name of the instance scoping this request. - instances_set_labels_request_resource (google.cloud.compute_v1.types.InstancesSetLabelsRequest): - The body resource for this request project (str): Project ID for this request. + region (str): + The region for this request. + region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): + The body resource for this request request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -140693,37 +141776,37 @@ class SetLabelsInstanceRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. - zone (str): - The name of the zone for this request. + resource (str): + Name or id of the resource for this request. """ - instance: str = proto.Field( - proto.STRING, - number=18257045, - ) - instances_set_labels_request_resource: "InstancesSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=207749344, - message="InstancesSetLabelsRequest", - ) project: str = proto.Field( proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=259357782, + message="RegionSetLabelsRequest", + ) request_id: str = proto.Field( proto.STRING, number=37109963, optional=True, ) - zone: str = proto.Field( + resource: str = proto.Field( proto.STRING, - number=3744684, + number=195806222, ) -class SetLabelsInstantSnapshotRequest(proto.Message): - r"""A request message for InstantSnapshots.SetLabels. See the - method description for details. +class SetLabelsRegionSecurityPolicyRequest(proto.Message): + r"""A request message for RegionSecurityPolicies.SetLabels. See + the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -140731,6 +141814,10 @@ class SetLabelsInstantSnapshotRequest(proto.Message): Attributes: project (str): Project ID for this request. + region (str): + The region for this request. + region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): + The body resource for this request request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -140755,16 +141842,21 @@ class SetLabelsInstantSnapshotRequest(proto.Message): This field is a member of `oneof`_ ``_request_id``. resource (str): Name or id of the resource for this request. - zone (str): - The name of the zone for this request. - zone_set_labels_request_resource (google.cloud.compute_v1.types.ZoneSetLabelsRequest): - The body resource for this request """ project: str = proto.Field( proto.STRING, number=227560217, ) + region: str = proto.Field( + proto.STRING, + number=138946292, + ) + region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( + proto.MESSAGE, + number=259357782, + message="RegionSetLabelsRequest", + ) request_id: str = proto.Field( proto.STRING, number=37109963, @@ -140774,20 +141866,11 @@ class SetLabelsInstantSnapshotRequest(proto.Message): proto.STRING, number=195806222, ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) - zone_set_labels_request_resource: "ZoneSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=364950798, - message="ZoneSetLabelsRequest", - ) -class SetLabelsInterconnectAttachmentRequest(proto.Message): - r"""A request message for InterconnectAttachments.SetLabels. See - the method description for details. +class SetLabelsRegionSnapshotRequest(proto.Message): + r"""A request message for RegionSnapshots.SetLabels. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -140849,9 +141932,9 @@ class SetLabelsInterconnectAttachmentRequest(proto.Message): ) -class SetLabelsInterconnectRequest(proto.Message): - r"""A request message for Interconnects.SetLabels. See the method - description for details. +class SetLabelsSecurityPolicyRequest(proto.Message): + r"""A request message for SecurityPolicies.SetLabels. See the + method description for details. Attributes: global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): @@ -140877,8 +141960,8 @@ class SetLabelsInterconnectRequest(proto.Message): ) -class SetLabelsMachineImageRequest(proto.Message): - r"""A request message for MachineImages.SetLabels. See the method +class SetLabelsSnapshotRequest(proto.Message): + r"""A request message for Snapshots.SetLabels. See the method description for details. Attributes: @@ -140905,73 +141988,9 @@ class SetLabelsMachineImageRequest(proto.Message): ) -class SetLabelsRegionDiskRequest(proto.Message): - r"""A request message for RegionDisks.SetLabels. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - project (str): - Project ID for this request. - region (str): - The region for this request. - region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): - The body resource for this request - request_id (str): - An optional request ID to identify requests. - Specify a unique request ID so that if you must - retry your request, the server will know to - ignore the request if it has already been - completed. - - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). - - This field is a member of `oneof`_ ``_request_id``. - resource (str): - Name or id of the resource for this request. - """ - - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) - region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=259357782, - message="RegionSetLabelsRequest", - ) - request_id: str = proto.Field( - proto.STRING, - number=37109963, - optional=True, - ) - resource: str = proto.Field( - proto.STRING, - number=195806222, - ) - - -class SetLabelsRegionInstantSnapshotRequest(proto.Message): - r"""A request message for RegionInstantSnapshots.SetLabels. See - the method description for details. +class SetLabelsTargetVpnGatewayRequest(proto.Message): + r"""A request message for TargetVpnGateways.SetLabels. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -141033,9 +142052,9 @@ class SetLabelsRegionInstantSnapshotRequest(proto.Message): ) -class SetLabelsRegionSecurityPolicyRequest(proto.Message): - r"""A request message for RegionSecurityPolicies.SetLabels. See - the method description for details. +class SetLabelsVpnGatewayRequest(proto.Message): + r"""A request message for VpnGateways.SetLabels. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -141097,9 +142116,9 @@ class SetLabelsRegionSecurityPolicyRequest(proto.Message): ) -class SetLabelsRegionSnapshotRequest(proto.Message): - r"""A request message for RegionSnapshots.SetLabels. See the - method description for details. +class SetLabelsVpnTunnelRequest(proto.Message): + r"""A request message for VpnTunnels.SetLabels. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -141161,140 +142180,20 @@ class SetLabelsRegionSnapshotRequest(proto.Message): ) -class SetLabelsSecurityPolicyRequest(proto.Message): - r"""A request message for SecurityPolicies.SetLabels. See the - method description for details. - - Attributes: - global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): - The body resource for this request - project (str): - Project ID for this request. - resource (str): - Name or id of the resource for this request. - """ - - global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=319917189, - message="GlobalSetLabelsRequest", - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - resource: str = proto.Field( - proto.STRING, - number=195806222, - ) - - -class SetLabelsSnapshotRequest(proto.Message): - r"""A request message for Snapshots.SetLabels. See the method - description for details. - - Attributes: - global_set_labels_request_resource (google.cloud.compute_v1.types.GlobalSetLabelsRequest): - The body resource for this request - project (str): - Project ID for this request. - resource (str): - Name or id of the resource for this request. - """ - - global_set_labels_request_resource: "GlobalSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=319917189, - message="GlobalSetLabelsRequest", - ) - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - resource: str = proto.Field( - proto.STRING, - number=195806222, - ) - - -class SetLabelsTargetVpnGatewayRequest(proto.Message): - r"""A request message for TargetVpnGateways.SetLabels. See the +class SetMachineResourcesInstanceRequest(proto.Message): + r"""A request message for Instances.SetMachineResources. See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - project (str): - Project ID for this request. - region (str): - The region for this request. - region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): + instance (str): + Name of the instance scoping this request. + instances_set_machine_resources_request_resource (google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest): The body resource for this request - request_id (str): - An optional request ID to identify requests. - Specify a unique request ID so that if you must - retry your request, the server will know to - ignore the request if it has already been - completed. - - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). - - This field is a member of `oneof`_ ``_request_id``. - resource (str): - Name or id of the resource for this request. - """ - - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) - region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=259357782, - message="RegionSetLabelsRequest", - ) - request_id: str = proto.Field( - proto.STRING, - number=37109963, - optional=True, - ) - resource: str = proto.Field( - proto.STRING, - number=195806222, - ) - - -class SetLabelsVpnGatewayRequest(proto.Message): - r"""A request message for VpnGateways.SetLabels. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: project (str): Project ID for this request. - region (str): - The region for this request. - region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): - The body resource for this request request_id (str): An optional request ID to identify requests. Specify a unique request ID so that if you must @@ -141317,100 +142216,36 @@ class SetLabelsVpnGatewayRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. - resource (str): - Name or id of the resource for this request. + zone (str): + The name of the zone for this request. """ - project: str = proto.Field( - proto.STRING, - number=227560217, - ) - region: str = proto.Field( + instance: str = proto.Field( proto.STRING, - number=138946292, + number=18257045, ) - region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( + instances_set_machine_resources_request_resource: "InstancesSetMachineResourcesRequest" = proto.Field( proto.MESSAGE, - number=259357782, - message="RegionSetLabelsRequest", - ) - request_id: str = proto.Field( - proto.STRING, - number=37109963, - optional=True, - ) - resource: str = proto.Field( - proto.STRING, - number=195806222, + number=196286318, + message="InstancesSetMachineResourcesRequest", ) - - -class SetLabelsVpnTunnelRequest(proto.Message): - r"""A request message for VpnTunnels.SetLabels. See the method - description for details. - - - .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields - - Attributes: - project (str): - Project ID for this request. - region (str): - The region for this request. - region_set_labels_request_resource (google.cloud.compute_v1.types.RegionSetLabelsRequest): - The body resource for this request - request_id (str): - An optional request ID to identify requests. - Specify a unique request ID so that if you must - retry your request, the server will know to - ignore the request if it has already been - completed. - - For example, consider a situation where you make - an initial request and the request times out. If - you make the request again with the same request - ID, the server can check if original operation - with the same request ID was received, and if - so, will ignore the second request. This - prevents clients from accidentally creating - duplicate commitments. - - The request ID must be - a valid UUID with the exception that zero UUID - is not supported - (00000000-0000-0000-0000-000000000000). - - This field is a member of `oneof`_ ``_request_id``. - resource (str): - Name or id of the resource for this request. - """ - project: str = proto.Field( proto.STRING, number=227560217, ) - region: str = proto.Field( - proto.STRING, - number=138946292, - ) - region_set_labels_request_resource: "RegionSetLabelsRequest" = proto.Field( - proto.MESSAGE, - number=259357782, - message="RegionSetLabelsRequest", - ) request_id: str = proto.Field( proto.STRING, number=37109963, optional=True, ) - resource: str = proto.Field( + zone: str = proto.Field( proto.STRING, - number=195806222, + number=3744684, ) -class SetMachineResourcesInstanceRequest(proto.Message): - r"""A request message for Instances.SetMachineResources. See the +class SetMachineTypeInstanceRequest(proto.Message): + r"""A request message for Instances.SetMachineType. See the method description for details. @@ -141419,7 +142254,7 @@ class SetMachineResourcesInstanceRequest(proto.Message): Attributes: instance (str): Name of the instance scoping this request. - instances_set_machine_resources_request_resource (google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest): + instances_set_machine_type_request_resource (google.cloud.compute_v1.types.InstancesSetMachineTypeRequest): The body resource for this request project (str): Project ID for this request. @@ -141453,10 +142288,12 @@ class SetMachineResourcesInstanceRequest(proto.Message): proto.STRING, number=18257045, ) - instances_set_machine_resources_request_resource: "InstancesSetMachineResourcesRequest" = proto.Field( - proto.MESSAGE, - number=196286318, - message="InstancesSetMachineResourcesRequest", + instances_set_machine_type_request_resource: "InstancesSetMachineTypeRequest" = ( + proto.Field( + proto.MESSAGE, + number=254157709, + message="InstancesSetMachineTypeRequest", + ) ) project: str = proto.Field( proto.STRING, @@ -141473,9 +142310,9 @@ class SetMachineResourcesInstanceRequest(proto.Message): ) -class SetMachineTypeInstanceRequest(proto.Message): - r"""A request message for Instances.SetMachineType. See the - method description for details. +class SetMetadataInstanceRequest(proto.Message): + r"""A request message for Instances.SetMetadata. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -141483,7 +142320,7 @@ class SetMachineTypeInstanceRequest(proto.Message): Attributes: instance (str): Name of the instance scoping this request. - instances_set_machine_type_request_resource (google.cloud.compute_v1.types.InstancesSetMachineTypeRequest): + metadata_resource (google.cloud.compute_v1.types.Metadata): The body resource for this request project (str): Project ID for this request. @@ -141517,12 +142354,10 @@ class SetMachineTypeInstanceRequest(proto.Message): proto.STRING, number=18257045, ) - instances_set_machine_type_request_resource: "InstancesSetMachineTypeRequest" = ( - proto.Field( - proto.MESSAGE, - number=254157709, - message="InstancesSetMachineTypeRequest", - ) + metadata_resource: "Metadata" = proto.Field( + proto.MESSAGE, + number=291086110, + message="Metadata", ) project: str = proto.Field( proto.STRING, @@ -141539,9 +142374,9 @@ class SetMachineTypeInstanceRequest(proto.Message): ) -class SetMetadataInstanceRequest(proto.Message): - r"""A request message for Instances.SetMetadata. See the method - description for details. +class SetMinCpuPlatformInstanceRequest(proto.Message): + r"""A request message for Instances.SetMinCpuPlatform. See the + method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -141549,7 +142384,7 @@ class SetMetadataInstanceRequest(proto.Message): Attributes: instance (str): Name of the instance scoping this request. - metadata_resource (google.cloud.compute_v1.types.Metadata): + instances_set_min_cpu_platform_request_resource (google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest): The body resource for this request project (str): Project ID for this request. @@ -141583,10 +142418,10 @@ class SetMetadataInstanceRequest(proto.Message): proto.STRING, number=18257045, ) - metadata_resource: "Metadata" = proto.Field( + instances_set_min_cpu_platform_request_resource: "InstancesSetMinCpuPlatformRequest" = proto.Field( proto.MESSAGE, - number=291086110, - message="Metadata", + number=148459368, + message="InstancesSetMinCpuPlatformRequest", ) project: str = proto.Field( proto.STRING, @@ -141603,17 +142438,17 @@ class SetMetadataInstanceRequest(proto.Message): ) -class SetMinCpuPlatformInstanceRequest(proto.Message): - r"""A request message for Instances.SetMinCpuPlatform. See the - method description for details. +class SetNameInstanceRequest(proto.Message): + r"""A request message for Instances.SetName. See the method + description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: instance (str): - Name of the instance scoping this request. - instances_set_min_cpu_platform_request_resource (google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest): + The instance name for this request. + instances_set_name_request_resource (google.cloud.compute_v1.types.InstancesSetNameRequest): The body resource for this request project (str): Project ID for this request. @@ -141647,10 +142482,10 @@ class SetMinCpuPlatformInstanceRequest(proto.Message): proto.STRING, number=18257045, ) - instances_set_min_cpu_platform_request_resource: "InstancesSetMinCpuPlatformRequest" = proto.Field( + instances_set_name_request_resource: "InstancesSetNameRequest" = proto.Field( proto.MESSAGE, - number=148459368, - message="InstancesSetMinCpuPlatformRequest", + number=272080980, + message="InstancesSetNameRequest", ) project: str = proto.Field( proto.STRING, @@ -141667,17 +142502,17 @@ class SetMinCpuPlatformInstanceRequest(proto.Message): ) -class SetNameInstanceRequest(proto.Message): - r"""A request message for Instances.SetName. See the method +class SetNameInterconnectRequest(proto.Message): + r"""A request message for Interconnects.SetName. See the method description for details. .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields Attributes: - instance (str): - The instance name for this request. - instances_set_name_request_resource (google.cloud.compute_v1.types.InstancesSetNameRequest): + interconnect (str): + Name of the interconnect to update. + interconnects_set_name_request_resource (google.cloud.compute_v1.types.InterconnectsSetNameRequest): The body resource for this request project (str): Project ID for this request. @@ -141703,18 +142538,18 @@ class SetNameInstanceRequest(proto.Message): (00000000-0000-0000-0000-000000000000). This field is a member of `oneof`_ ``_request_id``. - zone (str): - The name of the zone for this request. """ - instance: str = proto.Field( + interconnect: str = proto.Field( proto.STRING, - number=18257045, + number=224601230, ) - instances_set_name_request_resource: "InstancesSetNameRequest" = proto.Field( - proto.MESSAGE, - number=272080980, - message="InstancesSetNameRequest", + interconnects_set_name_request_resource: "InterconnectsSetNameRequest" = ( + proto.Field( + proto.MESSAGE, + number=316267707, + message="InterconnectsSetNameRequest", + ) ) project: str = proto.Field( proto.STRING, @@ -141725,10 +142560,6 @@ class SetNameInstanceRequest(proto.Message): number=37109963, optional=True, ) - zone: str = proto.Field( - proto.STRING, - number=3744684, - ) class SetNamedPortsInstanceGroupRequest(proto.Message): @@ -145727,6 +146558,18 @@ class SslCertificateSelfManagedSslCertificate(proto.Message): must include at least one intermediate cert. This field is a member of `oneof`_ ``_certificate``. + encrypted_pem_private_key (str): + A value read into memory from a write-only + private key file whose contents have been + encrypted using the appropriate HPKE key + distributed by Google. The underlying plaintext + MUST be a PEM format private key. For security, + only insert requests include this field. Exactly + one of privateKey or encryptedPemPrivateKey + MUST be specified when creating a self-managed + certificate. + + This field is a member of `oneof`_ ``_encrypted_pem_private_key``. private_key (str): A write-only private key in PEM format. Only insert requests will include this field. @@ -145739,6 +146582,11 @@ class SslCertificateSelfManagedSslCertificate(proto.Message): number=341787031, optional=True, ) + encrypted_pem_private_key: str = proto.Field( + proto.STRING, + number=344730753, + optional=True, + ) private_key: str = proto.Field( proto.STRING, number=361331107, @@ -162394,7 +163242,7 @@ class WaitZoneOperationRequest(proto.Message): class Warning(proto.Message): - r"""Informational warning message. + r""" .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields @@ -163307,6 +164155,12 @@ class WireProperties(proto.Message): values. This field is a member of `oneof`_ ``_fault_response``. + flow_management (str): + The flow management configuration for the + wire. Check the FlowManagement enum for the list + of possible values. + + This field is a member of `oneof`_ ``_flow_management``. """ class BandwidthAllocation(proto.Enum): @@ -163370,6 +164224,26 @@ class FaultResponse(proto.Enum): DISABLE_PORT = 287086488 NONE = 2402104 + class FlowManagement(proto.Enum): + r"""The flow management configuration for the wire. + + Values: + UNDEFINED_FLOW_MANAGEMENT (0): + A value indicating that the enum field is not + set. + DYNAMIC_PATH (243852357): + The wire uses dynamic paths. + FIXED_PATH (74947120): + The wire uses fixed paths. + FLOW_MANAGEMENT_UNSPECIFIED (122554188): + No description available. + """ + + UNDEFINED_FLOW_MANAGEMENT = 0 + DYNAMIC_PATH = 243852357 + FIXED_PATH = 74947120 + FLOW_MANAGEMENT_UNSPECIFIED = 122554188 + bandwidth_allocation: str = proto.Field( proto.STRING, number=90651950, @@ -163385,6 +164259,11 @@ class FaultResponse(proto.Enum): number=353587646, optional=True, ) + flow_management: str = proto.Field( + proto.STRING, + number=183886836, + optional=True, + ) class WithdrawPublicAdvertisedPrefixeRequest(proto.Message): diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnect_member_instances_list_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnect_member_instances_list_sync.py new file mode 100644 index 000000000000..bd361f285162 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnect_member_instances_list_sync.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_AcceleratorInterconnectMemberInstances_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.AcceleratorInterconnectMemberInstancesClient() + + # Initialize request argument(s) + request = compute_v1.ListAcceleratorInterconnectMemberInstancesRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1_generated_AcceleratorInterconnectMemberInstances_List_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_delete_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_delete_sync.py new file mode 100644 index 000000000000..e5f0f2370cf2 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_delete_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_AcceleratorInterconnects_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_v1 + + +def sample_delete(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.DeleteAcceleratorInterconnectRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_AcceleratorInterconnects_Delete_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_get_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_get_sync.py new file mode 100644 index 000000000000..9b1c2da9f72f --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_get_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_AcceleratorInterconnects_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.GetAcceleratorInterconnectRequest( + accelerator_interconnect="accelerator_interconnect_value", + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_AcceleratorInterconnects_Get_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_insert_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_insert_sync.py new file mode 100644 index 000000000000..8da5dfd408fa --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_insert_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_AcceleratorInterconnects_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_v1 + + +def sample_insert(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.InsertAcceleratorInterconnectRequest( + project="project_value", + zone="zone_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_AcceleratorInterconnects_Insert_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_list_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_list_sync.py new file mode 100644 index 000000000000..9710db84c856 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_list_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_AcceleratorInterconnects_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.ListAcceleratorInterconnectsRequest( + project="project_value", + zone="zone_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1_generated_AcceleratorInterconnects_List_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_query_formability_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_query_formability_sync.py new file mode 100644 index 000000000000..07bc72414640 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_accelerator_interconnects_query_formability_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 QueryFormability +# 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 + + +# [START compute_v1_generated_AcceleratorInterconnects_QueryFormability_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_v1 + + +def sample_query_formability(): + # Create a client + client = compute_v1.AcceleratorInterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.QueryFormabilityAcceleratorInterconnectsRequest( + project="project_value", + zone="zone_value", + ) + + # Make the request + page_result = client.query_formability(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1_generated_AcceleratorInterconnects_QueryFormability_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py new file mode 100644 index 000000000000..7b9339a7405b --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_get_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_GlobalFrontendSettingsService_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.GetGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_GlobalFrontendSettingsService_Get_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py new file mode 100644 index 000000000000..034c0e42f741 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_global_frontend_settings_service_patch_sync.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 Patch +# 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 + + +# [START compute_v1_generated_GlobalFrontendSettingsService_Patch_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_v1 + + +def sample_patch(): + # Create a client + client = compute_v1.GlobalFrontendSettingsServiceClient() + + # Initialize request argument(s) + request = compute_v1.PatchGlobalFrontendSettingRequest( + project="project_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_GlobalFrontendSettingsService_Patch_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_aggregated_list_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_aggregated_list_sync.py new file mode 100644 index 000000000000..79a364002466 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_aggregated_list_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 AggregatedList +# 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 + + +# [START compute_v1_generated_HaControllers_AggregatedList_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_v1 + + +def sample_aggregated_list(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.AggregatedListHaControllersRequest( + project="project_value", + ) + + # Make the request + page_result = client.aggregated_list(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1_generated_HaControllers_AggregatedList_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_delete_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_delete_sync.py new file mode 100644 index 000000000000..c7c8736d4e27 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_delete_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_HaControllers_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_v1 + + +def sample_delete(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.DeleteHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.delete(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_HaControllers_Delete_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_failover_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_failover_sync.py new file mode 100644 index 000000000000..1657bf5c04fe --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_failover_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 Failover +# 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 + + +# [START compute_v1_generated_HaControllers_Failover_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_v1 + + +def sample_failover(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.FailoverHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.failover(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_HaControllers_Failover_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_get_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_get_sync.py new file mode 100644 index 000000000000..e493d4b27ffa --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_get_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_HaControllers_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.GetHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_HaControllers_Get_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_insert_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_insert_sync.py new file mode 100644 index 000000000000..4d3bcceda5d8 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_insert_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_HaControllers_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_v1 + + +def sample_insert(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.InsertHaControllerRequest( + project="project_value", + region="region_value", + ) + + # Make the request + response = client.insert(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_HaControllers_Insert_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_list_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_list_sync.py new file mode 100644 index 000000000000..7002a0ebbc20 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_list_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_HaControllers_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.ListHaControllersRequest( + 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) + + +# [END compute_v1_generated_HaControllers_List_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_patch_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_patch_sync.py new file mode 100644 index 000000000000..c054e7bfa8f4 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_ha_controllers_patch_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 Patch +# 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 + + +# [START compute_v1_generated_HaControllers_Patch_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_v1 + + +def sample_patch(): + # Create a client + client = compute_v1.HaControllersClient() + + # Initialize request argument(s) + request = compute_v1.PatchHaControllerRequest( + ha_controller="ha_controller_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_HaControllers_Patch_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py new file mode 100644 index 000000000000..f64365130a82 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_get_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ImageViews_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.GetImageViewRequest( + project="project_value", + region="region_value", + resource_id="resource_id_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_ImageViews_Get_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py new file mode 100644 index 000000000000..081ff4f67af6 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_image_views_list_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ImageViews_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.ImageViewsClient() + + # Initialize request argument(s) + request = compute_v1.ListImageViewsRequest( + 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) + + +# [END compute_v1_generated_ImageViews_List_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py new file mode 100644 index 000000000000..86e99c74f105 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_interconnects_set_name_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 SetName +# 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 + + +# [START compute_v1_generated_Interconnects_SetName_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_v1 + + +def sample_set_name(): + # Create a client + client = compute_v1.InterconnectsClient() + + # Initialize request argument(s) + request = compute_v1.SetNameInterconnectRequest( + interconnect="interconnect_value", + project="project_value", + ) + + # Make the request + response = client.set_name(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_Interconnects_SetName_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py new file mode 100644 index 000000000000..a40ed0a0efc2 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_get_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ManagedRulesets_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_v1 + + +def sample_get(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.GetManagedRulesetRequest( + managed_ruleset="managed_ruleset_value", + project="project_value", + ) + + # Make the request + response = client.get(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_ManagedRulesets_Get_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py new file mode 100644 index 000000000000..83365328a9d9 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_managed_rulesets_list_sync.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 + + +# [START compute_v1_generated_ManagedRulesets_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_v1 + + +def sample_list(): + # Create a client + client = compute_v1.ManagedRulesetsClient() + + # Initialize request argument(s) + request = compute_v1.ListManagedRulesetsRequest( + project="project_value", + ) + + # Make the request + page_result = client.list(request=request) + + # Handle the response + for response in page_result: + print(response) + + +# [END compute_v1_generated_ManagedRulesets_List_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py new file mode 100644 index 000000000000..b8fd31d8bae3 --- /dev/null +++ b/preview-packages/google-cloud-compute/samples/generated_samples/compute_v1_generated_region_network_firewall_policies_patch_association_sync.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 PatchAssociation +# 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 + + +# [START compute_v1_generated_RegionNetworkFirewallPolicies_PatchAssociation_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_v1 + + +def sample_patch_association(): + # Create a client + client = compute_v1.RegionNetworkFirewallPoliciesClient() + + # Initialize request argument(s) + request = compute_v1.PatchAssociationRegionNetworkFirewallPolicyRequest( + firewall_policy="firewall_policy_value", + project="project_value", + region="region_value", + ) + + # Make the request + response = client.patch_association(request=request) + + # Handle the response + print(response) + + +# [END compute_v1_generated_RegionNetworkFirewallPolicies_PatchAssociation_sync] diff --git a/preview-packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json b/preview-packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json index 1011bde6bc9c..a26447a87a51 100644 --- a/preview-packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json +++ b/preview-packages/google-cloud-compute/samples/generated_samples/snippet_metadata_google.cloud.compute.v1.json @@ -15,27 +15,35 @@ "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AcceleratorTypesClient", - "shortName": "AcceleratorTypesClient" + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectMemberInstancesClient", + "shortName": "AcceleratorInterconnectMemberInstancesClient" }, - "fullName": "google.cloud.compute_v1.AcceleratorTypesClient.aggregated_list", + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectMemberInstancesClient.list", "method": { - "fullName": "google.cloud.compute.v1.AcceleratorTypes.AggregatedList", + "fullName": "google.cloud.compute.v1.AcceleratorInterconnectMemberInstances.List", "service": { - "fullName": "google.cloud.compute.v1.AcceleratorTypes", - "shortName": "AcceleratorTypes" + "fullName": "google.cloud.compute.v1.AcceleratorInterconnectMemberInstances", + "shortName": "AcceleratorInterconnectMemberInstances" }, - "shortName": "AggregatedList" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListAcceleratorTypesRequest" + "type": "google.cloud.compute_v1.types.ListAcceleratorInterconnectMemberInstancesRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "accelerator_interconnect", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -49,22 +57,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.accelerator_types.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.cloud.compute_v1.services.accelerator_interconnect_member_instances.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_accelerator_types_aggregated_list_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_accelerator_interconnect_member_instances_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_AcceleratorTypes_AggregatedList_sync", + "regionTag": "compute_v1_generated_AcceleratorInterconnectMemberInstances_List_sync", "segments": [ { - "end": 52, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 54, "start": 27, "type": "SHORT" }, @@ -74,43 +82,43 @@ "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": 55, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_accelerator_types_aggregated_list_sync.py" + "title": "compute_v1_generated_accelerator_interconnect_member_instances_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AcceleratorTypesClient", - "shortName": "AcceleratorTypesClient" + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient", + "shortName": "AcceleratorInterconnectsClient" }, - "fullName": "google.cloud.compute_v1.AcceleratorTypesClient.get", + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.AcceleratorTypes.Get", + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects.Delete", "service": { - "fullName": "google.cloud.compute.v1.AcceleratorTypes", - "shortName": "AcceleratorTypes" + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects", + "shortName": "AcceleratorInterconnects" }, - "shortName": "Get" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetAcceleratorTypeRequest" + "type": "google.cloud.compute_v1.types.DeleteAcceleratorInterconnectRequest" }, { "name": "project", @@ -121,7 +129,7 @@ "type": "str" }, { - "name": "accelerator_type", + "name": "accelerator_interconnect", "type": "str" }, { @@ -137,14 +145,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.AcceleratorType", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for Get", - "file": "compute_v1_generated_accelerator_types_get_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_accelerator_interconnects_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_AcceleratorTypes_Get_sync", + "regionTag": "compute_v1_generated_AcceleratorInterconnects_Delete_sync", "segments": [ { "end": 53, @@ -177,28 +185,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_accelerator_types_get_sync.py" + "title": "compute_v1_generated_accelerator_interconnects_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AcceleratorTypesClient", - "shortName": "AcceleratorTypesClient" + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient", + "shortName": "AcceleratorInterconnectsClient" }, - "fullName": "google.cloud.compute_v1.AcceleratorTypesClient.list", + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient.get", "method": { - "fullName": "google.cloud.compute.v1.AcceleratorTypes.List", + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects.Get", "service": { - "fullName": "google.cloud.compute.v1.AcceleratorTypes", - "shortName": "AcceleratorTypes" + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects", + "shortName": "AcceleratorInterconnects" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListAcceleratorTypesRequest" + "type": "google.cloud.compute_v1.types.GetAcceleratorInterconnectRequest" }, { "name": "project", @@ -208,6 +216,10 @@ "name": "zone", "type": "str" }, + { + "name": "accelerator_interconnect", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -221,14 +233,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.accelerator_types.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.AcceleratorInterconnect", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_accelerator_types_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_accelerator_interconnects_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_AcceleratorTypes_List_sync", + "regionTag": "compute_v1_generated_AcceleratorInterconnects_Get_sync", "segments": [ { "end": 53, @@ -246,48 +258,56 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { "end": 54, - "start": 50, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_accelerator_types_list_sync.py" + "title": "compute_v1_generated_accelerator_interconnects_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AddressesClient", - "shortName": "AddressesClient" + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient", + "shortName": "AcceleratorInterconnectsClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.aggregated_list", + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.Addresses.AggregatedList", + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects.Insert", "service": { - "fullName": "google.cloud.compute.v1.Addresses", - "shortName": "Addresses" + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects", + "shortName": "AcceleratorInterconnects" }, - "shortName": "AggregatedList" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListAddressesRequest" + "type": "google.cloud.compute_v1.types.InsertAcceleratorInterconnectRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "accelerator_interconnects_insert_request_resource", + "type": "google.cloud.compute_v1.types.AcceleratorInterconnectsInsertRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -301,14 +321,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.addresses.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_addresses_aggregated_list_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_accelerator_interconnects_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_AggregatedList_sync", + "regionTag": "compute_v1_generated_AcceleratorInterconnects_Insert_sync", "segments": [ { "end": 52, @@ -326,54 +346,50 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 49, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_addresses_aggregated_list_sync.py" + "title": "compute_v1_generated_accelerator_interconnects_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AddressesClient", - "shortName": "AddressesClient" + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient", + "shortName": "AcceleratorInterconnectsClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.delete", + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient.list", "method": { - "fullName": "google.cloud.compute.v1.Addresses.Delete", + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects.List", "service": { - "fullName": "google.cloud.compute.v1.Addresses", - "shortName": "Addresses" + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects", + "shortName": "AcceleratorInterconnects" }, - "shortName": "Delete" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteAddressRequest" + "type": "google.cloud.compute_v1.types.ListAcceleratorInterconnectsRequest" }, { "name": "project", "type": "str" }, { - "name": "region", - "type": "str" - }, - { - "name": "address", + "name": "zone", "type": "str" }, { @@ -389,14 +405,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.services.accelerator_interconnects.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_addresses_delete_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_accelerator_interconnects_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_Delete_sync", + "regionTag": "compute_v1_generated_AcceleratorInterconnects_List_sync", "segments": [ { "end": 53, @@ -414,55 +430,55 @@ "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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_addresses_delete_sync.py" + "title": "compute_v1_generated_accelerator_interconnects_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AddressesClient", - "shortName": "AddressesClient" + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient", + "shortName": "AcceleratorInterconnectsClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.get", + "fullName": "google.cloud.compute_v1.AcceleratorInterconnectsClient.query_formability", "method": { - "fullName": "google.cloud.compute.v1.Addresses.Get", + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects.QueryFormability", "service": { - "fullName": "google.cloud.compute.v1.Addresses", - "shortName": "Addresses" + "fullName": "google.cloud.compute.v1.AcceleratorInterconnects", + "shortName": "AcceleratorInterconnects" }, - "shortName": "Get" + "shortName": "QueryFormability" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetAddressRequest" + "type": "google.cloud.compute_v1.types.QueryFormabilityAcceleratorInterconnectsRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "zone", "type": "str" }, { - "name": "address", - "type": "str" + "name": "query_formability_request_resource", + "type": "google.cloud.compute_v1.types.QueryFormabilityRequest" }, { "name": "retry", @@ -477,14 +493,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Address", - "shortName": "get" + "resultType": "google.cloud.compute_v1.services.accelerator_interconnects.pagers.QueryFormabilityPager", + "shortName": "query_formability" }, - "description": "Sample for Get", - "file": "compute_v1_generated_addresses_get_sync.py", + "description": "Sample for QueryFormability", + "file": "compute_v1_generated_accelerator_interconnects_query_formability_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_Get_sync", + "regionTag": "compute_v1_generated_AcceleratorInterconnects_QueryFormability_sync", "segments": [ { "end": 53, @@ -502,55 +518,135 @@ "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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_addresses_get_sync.py" + "title": "compute_v1_generated_accelerator_interconnects_query_formability_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AddressesClient", - "shortName": "AddressesClient" + "fullName": "google.cloud.compute_v1.AcceleratorTypesClient", + "shortName": "AcceleratorTypesClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.insert", + "fullName": "google.cloud.compute_v1.AcceleratorTypesClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.Addresses.Insert", + "fullName": "google.cloud.compute.v1.AcceleratorTypes.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.Addresses", - "shortName": "Addresses" + "fullName": "google.cloud.compute.v1.AcceleratorTypes", + "shortName": "AcceleratorTypes" }, - "shortName": "Insert" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertAddressRequest" + "type": "google.cloud.compute_v1.types.AggregatedListAcceleratorTypesRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "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_v1.services.accelerator_types.pagers.AggregatedListPager", + "shortName": "aggregated_list" + }, + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_accelerator_types_aggregated_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_AcceleratorTypes_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_v1_generated_accelerator_types_aggregated_list_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.AcceleratorTypesClient", + "shortName": "AcceleratorTypesClient" + }, + "fullName": "google.cloud.compute_v1.AcceleratorTypesClient.get", + "method": { + "fullName": "google.cloud.compute.v1.AcceleratorTypes.Get", + "service": { + "fullName": "google.cloud.compute.v1.AcceleratorTypes", + "shortName": "AcceleratorTypes" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetAcceleratorTypeRequest" + }, + { + "name": "project", "type": "str" }, { - "name": "address_resource", - "type": "google.cloud.compute_v1.types.Address" + "name": "zone", + "type": "str" + }, + { + "name": "accelerator_type", + "type": "str" }, { "name": "retry", @@ -565,22 +661,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.AcceleratorType", + "shortName": "get" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_addresses_insert_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_accelerator_types_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_Insert_sync", + "regionTag": "compute_v1_generated_AcceleratorTypes_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -590,50 +686,50 @@ "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_v1_generated_addresses_insert_sync.py" + "title": "compute_v1_generated_accelerator_types_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AddressesClient", - "shortName": "AddressesClient" + "fullName": "google.cloud.compute_v1.AcceleratorTypesClient", + "shortName": "AcceleratorTypesClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.list", + "fullName": "google.cloud.compute_v1.AcceleratorTypesClient.list", "method": { - "fullName": "google.cloud.compute.v1.Addresses.List", + "fullName": "google.cloud.compute.v1.AcceleratorTypes.List", "service": { - "fullName": "google.cloud.compute.v1.Addresses", - "shortName": "Addresses" + "fullName": "google.cloud.compute.v1.AcceleratorTypes", + "shortName": "AcceleratorTypes" }, "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListAddressesRequest" + "type": "google.cloud.compute_v1.types.ListAcceleratorTypesRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "zone", "type": "str" }, { @@ -649,14 +745,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.addresses.pagers.ListPager", + "resultType": "google.cloud.compute_v1.services.accelerator_types.pagers.ListPager", "shortName": "list" }, "description": "Sample for List", - "file": "compute_v1_generated_addresses_list_sync.py", + "file": "compute_v1_generated_accelerator_types_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_List_sync", + "regionTag": "compute_v1_generated_AcceleratorTypes_List_sync", "segments": [ { "end": 53, @@ -689,7 +785,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_addresses_list_sync.py" + "title": "compute_v1_generated_accelerator_types_list_sync.py" }, { "canonical": true, @@ -698,36 +794,24 @@ "fullName": "google.cloud.compute_v1.AddressesClient", "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.move", + "fullName": "google.cloud.compute_v1.AddressesClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.Addresses.Move", + "fullName": "google.cloud.compute.v1.Addresses.AggregatedList", "service": { "fullName": "google.cloud.compute.v1.Addresses", "shortName": "Addresses" }, - "shortName": "Move" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.MoveAddressRequest" + "type": "google.cloud.compute_v1.types.AggregatedListAddressesRequest" }, { "name": "project", "type": "str" }, - { - "name": "region", - "type": "str" - }, - { - "name": "address", - "type": "str" - }, - { - "name": "region_addresses_move_request_resource", - "type": "google.cloud.compute_v1.types.RegionAddressesMoveRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -741,22 +825,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "move" + "resultType": "google.cloud.compute_v1.services.addresses.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for Move", - "file": "compute_v1_generated_addresses_move_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_addresses_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_Move_sync", + "regionTag": "compute_v1_generated_Addresses_AggregatedList_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -766,22 +850,22 @@ "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_v1_generated_addresses_move_sync.py" + "title": "compute_v1_generated_addresses_aggregated_list_sync.py" }, { "canonical": true, @@ -790,19 +874,19 @@ "fullName": "google.cloud.compute_v1.AddressesClient", "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.set_labels", + "fullName": "google.cloud.compute_v1.AddressesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Addresses.SetLabels", + "fullName": "google.cloud.compute.v1.Addresses.Delete", "service": { "fullName": "google.cloud.compute.v1.Addresses", "shortName": "Addresses" }, - "shortName": "SetLabels" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsAddressRequest" + "type": "google.cloud.compute_v1.types.DeleteAddressRequest" }, { "name": "project", @@ -813,13 +897,9 @@ "type": "str" }, { - "name": "resource", + "name": "address", "type": "str" }, - { - "name": "region_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.RegionSetLabelsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -834,13 +914,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "shortName": "delete" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_addresses_set_labels_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_addresses_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_SetLabels_sync", + "regionTag": "compute_v1_generated_Addresses_Delete_sync", "segments": [ { "end": 53, @@ -873,7 +953,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_addresses_set_labels_sync.py" + "title": "compute_v1_generated_addresses_delete_sync.py" }, { "canonical": true, @@ -882,19 +962,19 @@ "fullName": "google.cloud.compute_v1.AddressesClient", "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AddressesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.AddressesClient.get", "method": { - "fullName": "google.cloud.compute.v1.Addresses.TestIamPermissions", + "fullName": "google.cloud.compute.v1.Addresses.Get", "service": { "fullName": "google.cloud.compute.v1.Addresses", "shortName": "Addresses" }, - "shortName": "TestIamPermissions" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsAddressRequest" + "type": "google.cloud.compute_v1.types.GetAddressRequest" }, { "name": "project", @@ -905,13 +985,9 @@ "type": "str" }, { - "name": "resource", + "name": "address", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -925,14 +1001,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.types.Address", + "shortName": "get" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_addresses_test_iam_permissions_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_addresses_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Addresses_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_Addresses_Get_sync", "segments": [ { "end": 53, @@ -965,28 +1041,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_addresses_test_iam_permissions_sync.py" + "title": "compute_v1_generated_addresses_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AdviceClient", - "shortName": "AdviceClient" + "fullName": "google.cloud.compute_v1.AddressesClient", + "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AdviceClient.calendar_mode", + "fullName": "google.cloud.compute_v1.AddressesClient.insert", "method": { - "fullName": "google.cloud.compute.v1.Advice.CalendarMode", + "fullName": "google.cloud.compute.v1.Addresses.Insert", "service": { - "fullName": "google.cloud.compute.v1.Advice", - "shortName": "Advice" + "fullName": "google.cloud.compute.v1.Addresses", + "shortName": "Addresses" }, - "shortName": "CalendarMode" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.CalendarModeAdviceRpcRequest" + "type": "google.cloud.compute_v1.types.InsertAddressRequest" }, { "name": "project", @@ -997,8 +1073,8 @@ "type": "str" }, { - "name": "calendar_mode_advice_request_resource", - "type": "google.cloud.compute_v1.types.CalendarModeAdviceRequest" + "name": "address_resource", + "type": "google.cloud.compute_v1.types.Address" }, { "name": "retry", @@ -1013,14 +1089,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.CalendarModeAdviceResponse", - "shortName": "calendar_mode" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for CalendarMode", - "file": "compute_v1_generated_advice_calendar_mode_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_addresses_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Advice_CalendarMode_sync", + "regionTag": "compute_v1_generated_Addresses_Insert_sync", "segments": [ { "end": 52, @@ -1053,28 +1129,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_advice_calendar_mode_sync.py" + "title": "compute_v1_generated_addresses_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AdviceClient", - "shortName": "AdviceClient" + "fullName": "google.cloud.compute_v1.AddressesClient", + "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AdviceClient.capacity_history", + "fullName": "google.cloud.compute_v1.AddressesClient.list", "method": { - "fullName": "google.cloud.compute.v1.Advice.CapacityHistory", + "fullName": "google.cloud.compute.v1.Addresses.List", "service": { - "fullName": "google.cloud.compute.v1.Advice", - "shortName": "Advice" + "fullName": "google.cloud.compute.v1.Addresses", + "shortName": "Addresses" }, - "shortName": "CapacityHistory" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.CapacityHistoryAdviceRequest" + "type": "google.cloud.compute_v1.types.ListAddressesRequest" }, { "name": "project", @@ -1084,10 +1160,6 @@ "name": "region", "type": "str" }, - { - "name": "capacity_history_request_resource", - "type": "google.cloud.compute_v1.types.CapacityHistoryRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -1101,22 +1173,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.CapacityHistoryResponse", - "shortName": "capacity_history" + "resultType": "google.cloud.compute_v1.services.addresses.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for CapacityHistory", - "file": "compute_v1_generated_advice_capacity_history_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_addresses_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Advice_CapacityHistory_sync", + "regionTag": "compute_v1_generated_Addresses_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -1136,33 +1208,33 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_advice_capacity_history_sync.py" + "title": "compute_v1_generated_addresses_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AdviceClient", - "shortName": "AdviceClient" + "fullName": "google.cloud.compute_v1.AddressesClient", + "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AdviceClient.capacity", + "fullName": "google.cloud.compute_v1.AddressesClient.move", "method": { - "fullName": "google.cloud.compute.v1.Advice.Capacity", + "fullName": "google.cloud.compute.v1.Addresses.Move", "service": { - "fullName": "google.cloud.compute.v1.Advice", - "shortName": "Advice" + "fullName": "google.cloud.compute.v1.Addresses", + "shortName": "Addresses" }, - "shortName": "Capacity" + "shortName": "Move" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.CapacityAdviceRpcRequest" + "type": "google.cloud.compute_v1.types.MoveAddressRequest" }, { "name": "project", @@ -1173,8 +1245,12 @@ "type": "str" }, { - "name": "capacity_advice_request_resource", - "type": "google.cloud.compute_v1.types.CapacityAdviceRequest" + "name": "address", + "type": "str" + }, + { + "name": "region_addresses_move_request_resource", + "type": "google.cloud.compute_v1.types.RegionAddressesMoveRequest" }, { "name": "retry", @@ -1189,22 +1265,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.CapacityAdviceResponse", - "shortName": "capacity" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "move" }, - "description": "Sample for Capacity", - "file": "compute_v1_generated_advice_capacity_sync.py", + "description": "Sample for Move", + "file": "compute_v1_generated_addresses_move_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Advice_Capacity_sync", + "regionTag": "compute_v1_generated_Addresses_Move_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -1214,48 +1290,60 @@ "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_v1_generated_advice_capacity_sync.py" + "title": "compute_v1_generated_addresses_move_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AutoscalersClient", - "shortName": "AutoscalersClient" + "fullName": "google.cloud.compute_v1.AddressesClient", + "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AutoscalersClient.aggregated_list", + "fullName": "google.cloud.compute_v1.AddressesClient.set_labels", "method": { - "fullName": "google.cloud.compute.v1.Autoscalers.AggregatedList", + "fullName": "google.cloud.compute.v1.Addresses.SetLabels", "service": { - "fullName": "google.cloud.compute.v1.Autoscalers", - "shortName": "Autoscalers" + "fullName": "google.cloud.compute.v1.Addresses", + "shortName": "Addresses" }, - "shortName": "AggregatedList" + "shortName": "SetLabels" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListAutoscalersRequest" + "type": "google.cloud.compute_v1.types.SetLabelsAddressRequest" }, { "name": "project", "type": "str" }, + { + "name": "region", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "region_set_labels_request_resource", + "type": "google.cloud.compute_v1.types.RegionSetLabelsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -1269,22 +1357,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.autoscalers.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_labels" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_autoscalers_aggregated_list_sync.py", + "description": "Sample for SetLabels", + "file": "compute_v1_generated_addresses_set_labels_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Autoscalers_AggregatedList_sync", + "regionTag": "compute_v1_generated_Addresses_SetLabels_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -1294,56 +1382,60 @@ "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_v1_generated_autoscalers_aggregated_list_sync.py" + "title": "compute_v1_generated_addresses_set_labels_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.AutoscalersClient", - "shortName": "AutoscalersClient" + "fullName": "google.cloud.compute_v1.AddressesClient", + "shortName": "AddressesClient" }, - "fullName": "google.cloud.compute_v1.AutoscalersClient.delete", + "fullName": "google.cloud.compute_v1.AddressesClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.Autoscalers.Delete", + "fullName": "google.cloud.compute.v1.Addresses.TestIamPermissions", "service": { - "fullName": "google.cloud.compute.v1.Autoscalers", - "shortName": "Autoscalers" + "fullName": "google.cloud.compute.v1.Addresses", + "shortName": "Addresses" }, - "shortName": "Delete" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteAutoscalerRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsAddressRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", + "name": "region", "type": "str" }, { - "name": "autoscaler", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -1357,14 +1449,446 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_autoscalers_delete_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_addresses_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Autoscalers_Delete_sync", + "regionTag": "compute_v1_generated_Addresses_TestIamPermissions_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_v1_generated_addresses_test_iam_permissions_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.AdviceClient", + "shortName": "AdviceClient" + }, + "fullName": "google.cloud.compute_v1.AdviceClient.calendar_mode", + "method": { + "fullName": "google.cloud.compute.v1.Advice.CalendarMode", + "service": { + "fullName": "google.cloud.compute.v1.Advice", + "shortName": "Advice" + }, + "shortName": "CalendarMode" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.CalendarModeAdviceRpcRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "calendar_mode_advice_request_resource", + "type": "google.cloud.compute_v1.types.CalendarModeAdviceRequest" + }, + { + "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_v1.types.CalendarModeAdviceResponse", + "shortName": "calendar_mode" + }, + "description": "Sample for CalendarMode", + "file": "compute_v1_generated_advice_calendar_mode_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Advice_CalendarMode_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_v1_generated_advice_calendar_mode_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.AdviceClient", + "shortName": "AdviceClient" + }, + "fullName": "google.cloud.compute_v1.AdviceClient.capacity_history", + "method": { + "fullName": "google.cloud.compute.v1.Advice.CapacityHistory", + "service": { + "fullName": "google.cloud.compute.v1.Advice", + "shortName": "Advice" + }, + "shortName": "CapacityHistory" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.CapacityHistoryAdviceRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "capacity_history_request_resource", + "type": "google.cloud.compute_v1.types.CapacityHistoryRequest" + }, + { + "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_v1.types.CapacityHistoryResponse", + "shortName": "capacity_history" + }, + "description": "Sample for CapacityHistory", + "file": "compute_v1_generated_advice_capacity_history_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Advice_CapacityHistory_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_v1_generated_advice_capacity_history_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.AdviceClient", + "shortName": "AdviceClient" + }, + "fullName": "google.cloud.compute_v1.AdviceClient.capacity", + "method": { + "fullName": "google.cloud.compute.v1.Advice.Capacity", + "service": { + "fullName": "google.cloud.compute.v1.Advice", + "shortName": "Advice" + }, + "shortName": "Capacity" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.CapacityAdviceRpcRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "capacity_advice_request_resource", + "type": "google.cloud.compute_v1.types.CapacityAdviceRequest" + }, + { + "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_v1.types.CapacityAdviceResponse", + "shortName": "capacity" + }, + "description": "Sample for Capacity", + "file": "compute_v1_generated_advice_capacity_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Advice_Capacity_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_v1_generated_advice_capacity_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.AutoscalersClient", + "shortName": "AutoscalersClient" + }, + "fullName": "google.cloud.compute_v1.AutoscalersClient.aggregated_list", + "method": { + "fullName": "google.cloud.compute.v1.Autoscalers.AggregatedList", + "service": { + "fullName": "google.cloud.compute.v1.Autoscalers", + "shortName": "Autoscalers" + }, + "shortName": "AggregatedList" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.AggregatedListAutoscalersRequest" + }, + { + "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_v1.services.autoscalers.pagers.AggregatedListPager", + "shortName": "aggregated_list" + }, + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_autoscalers_aggregated_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Autoscalers_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_v1_generated_autoscalers_aggregated_list_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.AutoscalersClient", + "shortName": "AutoscalersClient" + }, + "fullName": "google.cloud.compute_v1.AutoscalersClient.delete", + "method": { + "fullName": "google.cloud.compute.v1.Autoscalers.Delete", + "service": { + "fullName": "google.cloud.compute.v1.Autoscalers", + "shortName": "Autoscalers" + }, + "shortName": "Delete" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.DeleteAutoscalerRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "autoscaler", + "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" + }, + "description": "Sample for Delete", + "file": "compute_v1_generated_autoscalers_delete_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Autoscalers_Delete_sync", "segments": [ { "end": 53, @@ -12095,6 +12619,170 @@ ], "title": "compute_v1_generated_global_forwarding_rules_set_target_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient", + "shortName": "GlobalFrontendSettingsServiceClient" + }, + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient.get", + "method": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService.Get", + "service": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "shortName": "GlobalFrontendSettingsService" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetGlobalFrontendSettingRequest" + }, + { + "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_v1.types.GlobalFrontendSettings", + "shortName": "get" + }, + "description": "Sample for Get", + "file": "compute_v1_generated_global_frontend_settings_service_get_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_GlobalFrontendSettingsService_Get_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_v1_generated_global_frontend_settings_service_get_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient", + "shortName": "GlobalFrontendSettingsServiceClient" + }, + "fullName": "google.cloud.compute_v1.GlobalFrontendSettingsServiceClient.patch", + "method": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService.Patch", + "service": { + "fullName": "google.cloud.compute.v1.GlobalFrontendSettingsService", + "shortName": "GlobalFrontendSettingsService" + }, + "shortName": "Patch" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.PatchGlobalFrontendSettingRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "global_frontend_settings_resource", + "type": "google.cloud.compute_v1.types.GlobalFrontendSettings" + }, + { + "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_v1.types.GlobalFrontendSettingsPatchResponse", + "shortName": "patch" + }, + "description": "Sample for Patch", + "file": "compute_v1_generated_global_frontend_settings_service_patch_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_GlobalFrontendSettingsService_Patch_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_v1_generated_global_frontend_settings_service_patch_sync.py" + }, { "canonical": true, "clientMethod": { @@ -14263,22 +14951,22 @@ "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.aggregated_list", + "fullName": "google.cloud.compute_v1.HaControllersClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.AggregatedList", + "fullName": "google.cloud.compute.v1.HaControllers.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListHealthChecksRequest" + "type": "google.cloud.compute_v1.types.AggregatedListHaControllersRequest" }, { "name": "project", @@ -14297,14 +14985,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.health_checks.pagers.AggregatedListPager", + "resultType": "google.cloud.compute_v1.services.ha_controllers.pagers.AggregatedListPager", "shortName": "aggregated_list" }, "description": "Sample for AggregatedList", - "file": "compute_v1_generated_health_checks_aggregated_list_sync.py", + "file": "compute_v1_generated_ha_controllers_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_AggregatedList_sync", + "regionTag": "compute_v1_generated_HaControllers_AggregatedList_sync", "segments": [ { "end": 52, @@ -14337,35 +15025,39 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_health_checks_aggregated_list_sync.py" + "title": "compute_v1_generated_ha_controllers_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.delete", + "fullName": "google.cloud.compute_v1.HaControllersClient.delete", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.Delete", + "fullName": "google.cloud.compute.v1.HaControllers.Delete", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteHealthCheckRequest" + "type": "google.cloud.compute_v1.types.DeleteHaControllerRequest" }, { "name": "project", "type": "str" }, { - "name": "health_check", + "name": "region", + "type": "str" + }, + { + "name": "ha_controller", "type": "str" }, { @@ -14385,18 +15077,18 @@ "shortName": "delete" }, "description": "Sample for Delete", - "file": "compute_v1_generated_health_checks_delete_sync.py", + "file": "compute_v1_generated_ha_controllers_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_Delete_sync", + "regionTag": "compute_v1_generated_HaControllers_Delete_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -14406,135 +15098,59 @@ "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_v1_generated_health_checks_delete_sync.py" + "title": "compute_v1_generated_ha_controllers_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.get", + "fullName": "google.cloud.compute_v1.HaControllersClient.failover", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.Get", + "fullName": "google.cloud.compute.v1.HaControllers.Failover", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, - "shortName": "Get" + "shortName": "Failover" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetHealthCheckRequest" + "type": "google.cloud.compute_v1.types.FailoverHaControllerRequest" }, { "name": "project", "type": "str" }, { - "name": "health_check", + "name": "region", "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_v1.types.HealthCheck", - "shortName": "get" - }, - "description": "Sample for Get", - "file": "compute_v1_generated_health_checks_get_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_Get_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_v1_generated_health_checks_get_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" - }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.insert", - "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.Insert", - "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" - }, - "shortName": "Insert" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.InsertHealthCheckRequest" - }, - { - "name": "project", + "name": "ha_controller", "type": "str" }, { - "name": "health_check_resource", - "type": "google.cloud.compute_v1.types.HealthCheck" + "name": "ha_controllers_failover_request_resource", + "type": "google.cloud.compute_v1.types.HaControllersFailoverRequest" }, { "name": "retry", @@ -14550,21 +15166,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "shortName": "failover" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_health_checks_insert_sync.py", + "description": "Sample for Failover", + "file": "compute_v1_generated_ha_controllers_failover_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_Insert_sync", + "regionTag": "compute_v1_generated_HaControllers_Failover_sync", "segments": [ { - "end": 51, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 53, "start": 27, "type": "SHORT" }, @@ -14574,48 +15190,56 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_health_checks_insert_sync.py" + "title": "compute_v1_generated_ha_controllers_failover_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.list", + "fullName": "google.cloud.compute_v1.HaControllersClient.get", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.List", + "fullName": "google.cloud.compute.v1.HaControllers.Get", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListHealthChecksRequest" + "type": "google.cloud.compute_v1.types.GetHaControllerRequest" }, { "name": "project", "type": "str" }, + { + "name": "region", + "type": "str" + }, + { + "name": "ha_controller", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -14629,22 +15253,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.health_checks.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.HaController", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_health_checks_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_ha_controllers_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_List_sync", + "regionTag": "compute_v1_generated_HaControllers_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -14654,55 +15278,55 @@ "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_v1_generated_health_checks_list_sync.py" + "title": "compute_v1_generated_ha_controllers_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.patch", + "fullName": "google.cloud.compute_v1.HaControllersClient.insert", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.Patch", + "fullName": "google.cloud.compute.v1.HaControllers.Insert", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, - "shortName": "Patch" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchHealthCheckRequest" + "type": "google.cloud.compute_v1.types.InsertHaControllerRequest" }, { "name": "project", "type": "str" }, { - "name": "health_check", + "name": "region", "type": "str" }, { - "name": "health_check_resource", - "type": "google.cloud.compute_v1.types.HealthCheck" + "name": "ha_controller_resource", + "type": "google.cloud.compute_v1.types.HaController" }, { "name": "retry", @@ -14718,13 +15342,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "shortName": "insert" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_health_checks_patch_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_ha_controllers_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_Patch_sync", + "regionTag": "compute_v1_generated_HaControllers_Insert_sync", "segments": [ { "end": 52, @@ -14757,41 +15381,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_health_checks_patch_sync.py" + "title": "compute_v1_generated_ha_controllers_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.HaControllersClient.list", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.TestIamPermissions", + "fullName": "google.cloud.compute.v1.HaControllers.List", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, - "shortName": "TestIamPermissions" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsHealthCheckRequest" + "type": "google.cloud.compute_v1.types.ListHaControllersRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -14805,22 +15425,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.services.ha_controllers.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_health_checks_test_iam_permissions_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_ha_controllers_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_HaControllers_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -14840,45 +15460,49 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_health_checks_test_iam_permissions_sync.py" + "title": "compute_v1_generated_ha_controllers_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HealthChecksClient", - "shortName": "HealthChecksClient" + "fullName": "google.cloud.compute_v1.HaControllersClient", + "shortName": "HaControllersClient" }, - "fullName": "google.cloud.compute_v1.HealthChecksClient.update", + "fullName": "google.cloud.compute_v1.HaControllersClient.patch", "method": { - "fullName": "google.cloud.compute.v1.HealthChecks.Update", + "fullName": "google.cloud.compute.v1.HaControllers.Patch", "service": { - "fullName": "google.cloud.compute.v1.HealthChecks", - "shortName": "HealthChecks" + "fullName": "google.cloud.compute.v1.HaControllers", + "shortName": "HaControllers" }, - "shortName": "Update" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateHealthCheckRequest" + "type": "google.cloud.compute_v1.types.PatchHaControllerRequest" }, { "name": "project", "type": "str" }, { - "name": "health_check", + "name": "region", "type": "str" }, { - "name": "health_check_resource", - "type": "google.cloud.compute_v1.types.HealthCheck" + "name": "ha_controller", + "type": "str" + }, + { + "name": "ha_controller_resource", + "type": "google.cloud.compute_v1.types.HaController" }, { "name": "retry", @@ -14894,21 +15518,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update" + "shortName": "patch" }, - "description": "Sample for Update", - "file": "compute_v1_generated_health_checks_update_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_ha_controllers_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_HealthChecks_Update_sync", + "regionTag": "compute_v1_generated_HaControllers_Patch_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -14918,64 +15542,48 @@ "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_v1_generated_health_checks_update_sync.py" + "title": "compute_v1_generated_ha_controllers_patch_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HostsClient", - "shortName": "HostsClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.HostsClient.get_version", + "fullName": "google.cloud.compute_v1.HealthChecksClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.Hosts.GetVersion", + "fullName": "google.cloud.compute.v1.HealthChecks.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.Hosts", - "shortName": "Hosts" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "GetVersion" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetVersionHostRequest" + "type": "google.cloud.compute_v1.types.AggregatedListHealthChecksRequest" }, { "name": "project", "type": "str" }, - { - "name": "zone", - "type": "str" - }, - { - "name": "association", - "type": "str" - }, - { - "name": "host", - "type": "str" - }, - { - "name": "hosts_get_version_request_resource", - "type": "google.cloud.compute_v1.types.HostsGetVersionRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -14989,22 +15597,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "get_version" + "resultType": "google.cloud.compute_v1.services.health_checks.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for GetVersion", - "file": "compute_v1_generated_hosts_get_version_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_health_checks_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Hosts_GetVersion_sync", + "regionTag": "compute_v1_generated_HealthChecks_AggregatedList_sync", "segments": [ { - "end": 54, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 52, "start": 27, "type": "SHORT" }, @@ -15014,58 +15622,50 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 53, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_hosts_get_version_sync.py" + "title": "compute_v1_generated_health_checks_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HostsClient", - "shortName": "HostsClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.HostsClient.get", + "fullName": "google.cloud.compute_v1.HealthChecksClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Hosts.Get", + "fullName": "google.cloud.compute.v1.HealthChecks.Delete", "service": { - "fullName": "google.cloud.compute.v1.Hosts", - "shortName": "Hosts" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "Get" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetHostRequest" + "type": "google.cloud.compute_v1.types.DeleteHealthCheckRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "association", - "type": "str" - }, - { - "name": "host", + "name": "health_check", "type": "str" }, { @@ -15081,22 +15681,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Host", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for Get", - "file": "compute_v1_generated_hosts_get_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_health_checks_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Hosts_Get_sync", + "regionTag": "compute_v1_generated_HealthChecks_Delete_sync", "segments": [ { - "end": 54, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 52, "start": 27, "type": "SHORT" }, @@ -15106,54 +15706,50 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_hosts_get_sync.py" + "title": "compute_v1_generated_health_checks_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.HostsClient", - "shortName": "HostsClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.HostsClient.list", + "fullName": "google.cloud.compute_v1.HealthChecksClient.get", "method": { - "fullName": "google.cloud.compute.v1.Hosts.List", + "fullName": "google.cloud.compute.v1.HealthChecks.Get", "service": { - "fullName": "google.cloud.compute.v1.Hosts", - "shortName": "Hosts" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListHostsRequest" + "type": "google.cloud.compute_v1.types.GetHealthCheckRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "association", + "name": "health_check", "type": "str" }, { @@ -15169,22 +15765,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.hosts.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.HealthCheck", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_hosts_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_health_checks_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Hosts_List_sync", + "regionTag": "compute_v1_generated_HealthChecks_Get_sync", "segments": [ { - "end": 54, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 52, "start": 27, "type": "SHORT" }, @@ -15194,55 +15790,51 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 51, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_hosts_list_sync.py" + "title": "compute_v1_generated_health_checks_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImageFamilyViewsClient", - "shortName": "ImageFamilyViewsClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.ImageFamilyViewsClient.get", + "fullName": "google.cloud.compute_v1.HealthChecksClient.insert", "method": { - "fullName": "google.cloud.compute.v1.ImageFamilyViews.Get", + "fullName": "google.cloud.compute.v1.HealthChecks.Insert", "service": { - "fullName": "google.cloud.compute.v1.ImageFamilyViews", - "shortName": "ImageFamilyViews" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "Get" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetImageFamilyViewRequest" + "type": "google.cloud.compute_v1.types.InsertHealthCheckRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "family", - "type": "str" + "name": "health_check_resource", + "type": "google.cloud.compute_v1.types.HealthCheck" }, { "name": "retry", @@ -15257,22 +15849,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.ImageFamilyView", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for Get", - "file": "compute_v1_generated_image_family_views_get_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_health_checks_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_ImageFamilyViews_Get_sync", + "regionTag": "compute_v1_generated_HealthChecks_Insert_sync", "segments": [ { - "end": 53, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 51, "start": 27, "type": "SHORT" }, @@ -15282,52 +15874,48 @@ "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": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_image_family_views_get_sync.py" + "title": "compute_v1_generated_health_checks_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.delete", + "fullName": "google.cloud.compute_v1.HealthChecksClient.list", "method": { - "fullName": "google.cloud.compute.v1.Images.Delete", + "fullName": "google.cloud.compute.v1.HealthChecks.List", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "Delete" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteImageRequest" + "type": "google.cloud.compute_v1.types.ListHealthChecksRequest" }, { "name": "project", "type": "str" }, - { - "name": "image", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -15341,14 +15929,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.services.health_checks.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_images_delete_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_health_checks_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Delete_sync", + "regionTag": "compute_v1_generated_HealthChecks_List_sync", "segments": [ { "end": 52, @@ -15366,55 +15954,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_delete_sync.py" + "title": "compute_v1_generated_health_checks_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.deprecate", + "fullName": "google.cloud.compute_v1.HealthChecksClient.patch", "method": { - "fullName": "google.cloud.compute.v1.Images.Deprecate", + "fullName": "google.cloud.compute.v1.HealthChecks.Patch", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "Deprecate" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeprecateImageRequest" + "type": "google.cloud.compute_v1.types.PatchHealthCheckRequest" }, { "name": "project", "type": "str" }, { - "name": "image", + "name": "health_check", "type": "str" }, { - "name": "deprecation_status_resource", - "type": "google.cloud.compute_v1.types.DeprecationStatus" + "name": "health_check_resource", + "type": "google.cloud.compute_v1.types.HealthCheck" }, { "name": "retry", @@ -15430,13 +16018,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "deprecate" + "shortName": "patch" }, - "description": "Sample for Deprecate", - "file": "compute_v1_generated_images_deprecate_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_health_checks_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Deprecate_sync", + "regionTag": "compute_v1_generated_HealthChecks_Patch_sync", "segments": [ { "end": 52, @@ -15469,37 +16057,41 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_deprecate_sync.py" + "title": "compute_v1_generated_health_checks_patch_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.get_from_family", + "fullName": "google.cloud.compute_v1.HealthChecksClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.Images.GetFromFamily", + "fullName": "google.cloud.compute.v1.HealthChecks.TestIamPermissions", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "GetFromFamily" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetFromFamilyImageRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsHealthCheckRequest" }, { "name": "project", "type": "str" }, { - "name": "family", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -15513,14 +16105,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Image", - "shortName": "get_from_family" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for GetFromFamily", - "file": "compute_v1_generated_images_get_from_family_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_health_checks_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_GetFromFamily_sync", + "regionTag": "compute_v1_generated_HealthChecks_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -15553,37 +16145,41 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_get_from_family_sync.py" + "title": "compute_v1_generated_health_checks_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HealthChecksClient", + "shortName": "HealthChecksClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.HealthChecksClient.update", "method": { - "fullName": "google.cloud.compute.v1.Images.GetIamPolicy", + "fullName": "google.cloud.compute.v1.HealthChecks.Update", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.HealthChecks", + "shortName": "HealthChecks" }, - "shortName": "GetIamPolicy" + "shortName": "Update" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyImageRequest" + "type": "google.cloud.compute_v1.types.UpdateHealthCheckRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "health_check", "type": "str" }, + { + "name": "health_check_resource", + "type": "google.cloud.compute_v1.types.HealthCheck" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -15597,14 +16193,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "update" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_images_get_iam_policy_sync.py", + "description": "Sample for Update", + "file": "compute_v1_generated_health_checks_update_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_HealthChecks_Update_sync", "segments": [ { "end": 52, @@ -15637,37 +16233,49 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_get_iam_policy_sync.py" + "title": "compute_v1_generated_health_checks_update_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HostsClient", + "shortName": "HostsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.get", + "fullName": "google.cloud.compute_v1.HostsClient.get_version", "method": { - "fullName": "google.cloud.compute.v1.Images.Get", + "fullName": "google.cloud.compute.v1.Hosts.GetVersion", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.Hosts", + "shortName": "Hosts" }, - "shortName": "Get" + "shortName": "GetVersion" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetImageRequest" + "type": "google.cloud.compute_v1.types.GetVersionHostRequest" }, { "name": "project", "type": "str" }, { - "name": "image", + "name": "zone", + "type": "str" + }, + { + "name": "association", + "type": "str" + }, + { + "name": "host", "type": "str" }, + { + "name": "hosts_get_version_request_resource", + "type": "google.cloud.compute_v1.types.HostsGetVersionRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -15681,22 +16289,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Image", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "get_version" }, - "description": "Sample for Get", - "file": "compute_v1_generated_images_get_sync.py", + "description": "Sample for GetVersion", + "file": "compute_v1_generated_hosts_get_version_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Get_sync", + "regionTag": "compute_v1_generated_Hosts_GetVersion_sync", "segments": [ { - "end": 52, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 54, "start": 27, "type": "SHORT" }, @@ -15706,51 +16314,59 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_get_sync.py" + "title": "compute_v1_generated_hosts_get_version_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HostsClient", + "shortName": "HostsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.insert", + "fullName": "google.cloud.compute_v1.HostsClient.get", "method": { - "fullName": "google.cloud.compute.v1.Images.Insert", + "fullName": "google.cloud.compute.v1.Hosts.Get", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.Hosts", + "shortName": "Hosts" }, - "shortName": "Insert" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertImageRequest" + "type": "google.cloud.compute_v1.types.GetHostRequest" }, { "name": "project", "type": "str" }, { - "name": "image_resource", - "type": "google.cloud.compute_v1.types.Image" + "name": "zone", + "type": "str" + }, + { + "name": "association", + "type": "str" + }, + { + "name": "host", + "type": "str" }, { "name": "retry", @@ -15765,22 +16381,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.Host", + "shortName": "get" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_images_insert_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_hosts_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Insert_sync", + "regionTag": "compute_v1_generated_Hosts_Get_sync", "segments": [ { - "end": 51, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 54, "start": 27, "type": "SHORT" }, @@ -15790,48 +16406,56 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_insert_sync.py" + "title": "compute_v1_generated_hosts_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.HostsClient", + "shortName": "HostsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.list", + "fullName": "google.cloud.compute_v1.HostsClient.list", "method": { - "fullName": "google.cloud.compute.v1.Images.List", + "fullName": "google.cloud.compute.v1.Hosts.List", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.Hosts", + "shortName": "Hosts" }, "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListImagesRequest" + "type": "google.cloud.compute_v1.types.ListHostsRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "association", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -15845,22 +16469,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.images.pagers.ListPager", + "resultType": "google.cloud.compute_v1.services.hosts.pagers.ListPager", "shortName": "list" }, "description": "Sample for List", - "file": "compute_v1_generated_images_list_sync.py", + "file": "compute_v1_generated_hosts_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_List_sync", + "regionTag": "compute_v1_generated_Hosts_List_sync", "segments": [ { - "end": 52, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 54, "start": 27, "type": "SHORT" }, @@ -15870,55 +16494,55 @@ "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": 55, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_list_sync.py" + "title": "compute_v1_generated_hosts_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.ImageFamilyViewsClient", + "shortName": "ImageFamilyViewsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.patch", + "fullName": "google.cloud.compute_v1.ImageFamilyViewsClient.get", "method": { - "fullName": "google.cloud.compute.v1.Images.Patch", + "fullName": "google.cloud.compute.v1.ImageFamilyViews.Get", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.ImageFamilyViews", + "shortName": "ImageFamilyViews" }, - "shortName": "Patch" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchImageRequest" + "type": "google.cloud.compute_v1.types.GetImageFamilyViewRequest" }, { "name": "project", "type": "str" }, { - "name": "image", + "name": "zone", "type": "str" }, { - "name": "image_resource", - "type": "google.cloud.compute_v1.types.Image" + "name": "family", + "type": "str" }, { "name": "retry", @@ -15933,22 +16557,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1.types.ImageFamilyView", + "shortName": "get" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_images_patch_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_image_family_views_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_Patch_sync", + "regionTag": "compute_v1_generated_ImageFamilyViews_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -15958,55 +16582,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_v1_generated_images_patch_sync.py" + "title": "compute_v1_generated_image_family_views_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.ImageViewsClient", + "shortName": "ImageViewsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.ImageViewsClient.get", "method": { - "fullName": "google.cloud.compute.v1.Images.SetIamPolicy", + "fullName": "google.cloud.compute.v1.ImageViews.Get", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.ImageViews", + "shortName": "ImageViews" }, - "shortName": "SetIamPolicy" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyImageRequest" + "type": "google.cloud.compute_v1.types.GetImageViewRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + "name": "resource_id", + "type": "str" }, { "name": "retry", @@ -16021,22 +16645,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.cloud.compute_v1.types.ImageView", + "shortName": "get" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_images_set_iam_policy_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_image_views_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_ImageViews_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -16046,56 +16670,52 @@ "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_v1_generated_images_set_iam_policy_sync.py" + "title": "compute_v1_generated_image_views_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.ImagesClient", - "shortName": "ImagesClient" + "fullName": "google.cloud.compute_v1.ImageViewsClient", + "shortName": "ImageViewsClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.set_labels", + "fullName": "google.cloud.compute_v1.ImageViewsClient.list", "method": { - "fullName": "google.cloud.compute.v1.Images.SetLabels", + "fullName": "google.cloud.compute.v1.ImageViews.List", "service": { - "fullName": "google.cloud.compute.v1.Images", - "shortName": "Images" + "fullName": "google.cloud.compute.v1.ImageViews", + "shortName": "ImageViews" }, - "shortName": "SetLabels" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsImageRequest" + "type": "google.cloud.compute_v1.types.ListImageViewsRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, - { - "name": "global_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetLabelsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -16109,22 +16729,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "resultType": "google.cloud.compute_v1.services.image_views.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_images_set_labels_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_image_views_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_SetLabels_sync", + "regionTag": "compute_v1_generated_ImageViews_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -16144,12 +16764,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_images_set_labels_sync.py" + "title": "compute_v1_generated_image_views_list_sync.py" }, { "canonical": true, @@ -16158,32 +16778,28 @@ "fullName": "google.cloud.compute_v1.ImagesClient", "shortName": "ImagesClient" }, - "fullName": "google.cloud.compute_v1.ImagesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.ImagesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Images.TestIamPermissions", + "fullName": "google.cloud.compute.v1.Images.Delete", "service": { "fullName": "google.cloud.compute.v1.Images", "shortName": "Images" }, - "shortName": "TestIamPermissions" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsImageRequest" + "type": "google.cloud.compute_v1.types.DeleteImageRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "image", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -16197,14 +16813,870 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_images_test_iam_permissions_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_images_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Images_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_Images_Delete_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_v1_generated_images_delete_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.deprecate", + "method": { + "fullName": "google.cloud.compute.v1.Images.Deprecate", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "Deprecate" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.DeprecateImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "image", + "type": "str" + }, + { + "name": "deprecation_status_resource", + "type": "google.cloud.compute_v1.types.DeprecationStatus" + }, + { + "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": "deprecate" + }, + "description": "Sample for Deprecate", + "file": "compute_v1_generated_images_deprecate_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_Deprecate_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_v1_generated_images_deprecate_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.get_from_family", + "method": { + "fullName": "google.cloud.compute.v1.Images.GetFromFamily", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "GetFromFamily" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetFromFamilyImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "family", + "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_v1.types.Image", + "shortName": "get_from_family" + }, + "description": "Sample for GetFromFamily", + "file": "compute_v1_generated_images_get_from_family_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_GetFromFamily_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_v1_generated_images_get_from_family_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.get_iam_policy", + "method": { + "fullName": "google.cloud.compute.v1.Images.GetIamPolicy", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "GetIamPolicy" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetIamPolicyImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "resource", + "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_v1.types.Policy", + "shortName": "get_iam_policy" + }, + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_images_get_iam_policy_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_GetIamPolicy_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_v1_generated_images_get_iam_policy_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.get", + "method": { + "fullName": "google.cloud.compute.v1.Images.Get", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "image", + "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_v1.types.Image", + "shortName": "get" + }, + "description": "Sample for Get", + "file": "compute_v1_generated_images_get_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_Get_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_v1_generated_images_get_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.insert", + "method": { + "fullName": "google.cloud.compute.v1.Images.Insert", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "Insert" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.InsertImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "image_resource", + "type": "google.cloud.compute_v1.types.Image" + }, + { + "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": "insert" + }, + "description": "Sample for Insert", + "file": "compute_v1_generated_images_insert_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_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_v1_generated_images_insert_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.list", + "method": { + "fullName": "google.cloud.compute.v1.Images.List", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "List" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.ListImagesRequest" + }, + { + "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_v1.services.images.pagers.ListPager", + "shortName": "list" + }, + "description": "Sample for List", + "file": "compute_v1_generated_images_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_List_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_v1_generated_images_list_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.patch", + "method": { + "fullName": "google.cloud.compute.v1.Images.Patch", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "Patch" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.PatchImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "image", + "type": "str" + }, + { + "name": "image_resource", + "type": "google.cloud.compute_v1.types.Image" + }, + { + "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_v1_generated_images_patch_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_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_v1_generated_images_patch_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.set_iam_policy", + "method": { + "fullName": "google.cloud.compute.v1.Images.SetIamPolicy", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "SetIamPolicy" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.SetIamPolicyImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + }, + { + "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_v1.types.Policy", + "shortName": "set_iam_policy" + }, + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_images_set_iam_policy_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_SetIamPolicy_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_v1_generated_images_set_iam_policy_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.set_labels", + "method": { + "fullName": "google.cloud.compute.v1.Images.SetLabels", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "SetLabels" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.SetLabelsImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "global_set_labels_request_resource", + "type": "google.cloud.compute_v1.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_v1_generated_images_set_labels_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_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_v1_generated_images_set_labels_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.ImagesClient", + "shortName": "ImagesClient" + }, + "fullName": "google.cloud.compute_v1.ImagesClient.test_iam_permissions", + "method": { + "fullName": "google.cloud.compute.v1.Images.TestIamPermissions", + "service": { + "fullName": "google.cloud.compute.v1.Images", + "shortName": "Images" + }, + "shortName": "TestIamPermissions" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.TestIamPermissionsImageRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.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_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" + }, + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_images_test_iam_permissions_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Images_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -16246,19 +17718,295 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", "shortName": "InstanceGroupManagerResizeRequestsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.cancel", + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.cancel", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Cancel", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", + "shortName": "InstanceGroupManagerResizeRequests" + }, + "shortName": "Cancel" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.CancelInstanceGroupManagerResizeRequestRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "resize_request", + "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": "cancel" + }, + "description": "Sample for Cancel", + "file": "compute_v1_generated_instance_group_manager_resize_requests_cancel_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Cancel_sync", + "segments": [ + { + "end": 54, + "start": 27, + "type": "FULL" + }, + { + "end": 54, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 48, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 51, + "start": 49, + "type": "REQUEST_EXECUTION" + }, + { + "end": 55, + "start": 52, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1_generated_instance_group_manager_resize_requests_cancel_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", + "shortName": "InstanceGroupManagerResizeRequestsClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.delete", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Delete", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", + "shortName": "InstanceGroupManagerResizeRequests" + }, + "shortName": "Delete" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.DeleteInstanceGroupManagerResizeRequestRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "resize_request", + "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" + }, + "description": "Sample for Delete", + "file": "compute_v1_generated_instance_group_manager_resize_requests_delete_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Delete_sync", + "segments": [ + { + "end": 54, + "start": 27, + "type": "FULL" + }, + { + "end": 54, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 48, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 51, + "start": 49, + "type": "REQUEST_EXECUTION" + }, + { + "end": 55, + "start": 52, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1_generated_instance_group_manager_resize_requests_delete_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", + "shortName": "InstanceGroupManagerResizeRequestsClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.get", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Get", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", + "shortName": "InstanceGroupManagerResizeRequests" + }, + "shortName": "Get" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.GetInstanceGroupManagerResizeRequestRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "resize_request", + "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_v1.types.InstanceGroupManagerResizeRequest", + "shortName": "get" + }, + "description": "Sample for Get", + "file": "compute_v1_generated_instance_group_manager_resize_requests_get_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Get_sync", + "segments": [ + { + "end": 54, + "start": 27, + "type": "FULL" + }, + { + "end": 54, + "start": 27, + "type": "SHORT" + }, + { + "end": 40, + "start": 38, + "type": "CLIENT_INITIALIZATION" + }, + { + "end": 48, + "start": 41, + "type": "REQUEST_INITIALIZATION" + }, + { + "end": 51, + "start": 49, + "type": "REQUEST_EXECUTION" + }, + { + "end": 55, + "start": 52, + "type": "RESPONSE_HANDLING" + } + ], + "title": "compute_v1_generated_instance_group_manager_resize_requests_get_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", + "shortName": "InstanceGroupManagerResizeRequestsClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Cancel", + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Insert", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", "shortName": "InstanceGroupManagerResizeRequests" }, - "shortName": "Cancel" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.CancelInstanceGroupManagerResizeRequestRequest" + "type": "google.cloud.compute_v1.types.InsertInstanceGroupManagerResizeRequestRequest" }, { "name": "project", @@ -16273,8 +18021,8 @@ "type": "str" }, { - "name": "resize_request", - "type": "str" + "name": "instance_group_manager_resize_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagerResizeRequest" }, { "name": "retry", @@ -16290,21 +18038,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "cancel" + "shortName": "insert" }, - "description": "Sample for Cancel", - "file": "compute_v1_generated_instance_group_manager_resize_requests_cancel_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instance_group_manager_resize_requests_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Cancel_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Insert_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -16314,22 +18062,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_manager_resize_requests_cancel_sync.py" + "title": "compute_v1_generated_instance_group_manager_resize_requests_insert_sync.py" }, { "canonical": true, @@ -16338,19 +18086,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", "shortName": "InstanceGroupManagerResizeRequestsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.delete", + "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Delete", + "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.List", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", "shortName": "InstanceGroupManagerResizeRequests" }, - "shortName": "Delete" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstanceGroupManagerResizeRequestRequest" + "type": "google.cloud.compute_v1.types.ListInstanceGroupManagerResizeRequestsRequest" }, { "name": "project", @@ -16365,9 +18113,97 @@ "type": "str" }, { - "name": "resize_request", + "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_v1.services.instance_group_manager_resize_requests.pagers.ListPager", + "shortName": "list" + }, + "description": "Sample for List", + "file": "compute_v1_generated_instance_group_manager_resize_requests_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_List_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_v1_generated_instance_group_manager_resize_requests_list_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.abandon_instances", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.AbandonInstances", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" + }, + "shortName": "AbandonInstances" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.AbandonInstancesInstanceGroupManagerRequest" + }, + { + "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "instance_group_managers_abandon_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersAbandonInstancesRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -16382,21 +18218,101 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "abandon_instances" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instance_group_manager_resize_requests_delete_sync.py", + "description": "Sample for AbandonInstances", + "file": "compute_v1_generated_instance_group_managers_abandon_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Delete_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_AbandonInstances_sync", "segments": [ { - "end": 54, + "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_v1_generated_instance_group_managers_abandon_instances_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.aggregated_list", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.AggregatedList", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" + }, + "shortName": "AggregatedList" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.AggregatedListInstanceGroupManagersRequest" + }, + { + "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_v1.services.instance_group_managers.pagers.AggregatedListPager", + "shortName": "aggregated_list" + }, + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_instance_group_managers_aggregated_list_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagers_AggregatedList_sync", + "segments": [ + { + "end": 52, + "start": 27, + "type": "FULL" + }, + { + "end": 52, "start": 27, "type": "SHORT" }, @@ -16406,43 +18322,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 53, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_manager_resize_requests_delete_sync.py" + "title": "compute_v1_generated_instance_group_managers_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", - "shortName": "InstanceGroupManagerResizeRequestsClient" + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.get", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.apply_updates_to_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Get", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ApplyUpdatesToInstances", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", - "shortName": "InstanceGroupManagerResizeRequests" + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" }, - "shortName": "Get" + "shortName": "ApplyUpdatesToInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstanceGroupManagerResizeRequestRequest" + "type": "google.cloud.compute_v1.types.ApplyUpdatesToInstancesInstanceGroupManagerRequest" }, { "name": "project", @@ -16457,8 +18373,8 @@ "type": "str" }, { - "name": "resize_request", - "type": "str" + "name": "instance_group_managers_apply_updates_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersApplyUpdatesRequest" }, { "name": "retry", @@ -16473,22 +18389,206 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstanceGroupManagerResizeRequest", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "apply_updates_to_instances" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instance_group_manager_resize_requests_get_sync.py", + "description": "Sample for ApplyUpdatesToInstances", + "file": "compute_v1_generated_instance_group_managers_apply_updates_to_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Get_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_ApplyUpdatesToInstances_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_v1_generated_instance_group_managers_apply_updates_to_instances_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.create_instances", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.CreateInstances", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" + }, + "shortName": "CreateInstances" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.CreateInstancesInstanceGroupManagerRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "instance_group_managers_create_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersCreateInstancesRequest" + }, + { + "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": "create_instances" + }, + "description": "Sample for CreateInstances", + "file": "compute_v1_generated_instance_group_managers_create_instances_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagers_CreateInstances_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_v1_generated_instance_group_managers_create_instances_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" + }, + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.delete_instances", + "method": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.DeleteInstances", + "service": { + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" + }, + "shortName": "DeleteInstances" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.DeleteInstancesInstanceGroupManagerRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "instance_group_managers_delete_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersDeleteInstancesRequest" + }, + { + "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_instances" + }, + "description": "Sample for DeleteInstances", + "file": "compute_v1_generated_instance_group_managers_delete_instances_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_InstanceGroupManagers_DeleteInstances_sync", + "segments": [ + { + "end": 53, + "start": 27, + "type": "FULL" + }, + { + "end": 53, "start": 27, "type": "SHORT" }, @@ -16498,43 +18598,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_manager_resize_requests_get_sync.py" + "title": "compute_v1_generated_instance_group_managers_delete_instances_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", - "shortName": "InstanceGroupManagerResizeRequestsClient" + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.insert", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.delete_per_instance_configs", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.Insert", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.DeletePerInstanceConfigs", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", - "shortName": "InstanceGroupManagerResizeRequests" + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" }, - "shortName": "Insert" + "shortName": "DeletePerInstanceConfigs" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstanceGroupManagerResizeRequestRequest" + "type": "google.cloud.compute_v1.types.DeletePerInstanceConfigsInstanceGroupManagerRequest" }, { "name": "project", @@ -16549,8 +18649,8 @@ "type": "str" }, { - "name": "instance_group_manager_resize_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagerResizeRequest" + "name": "instance_group_managers_delete_per_instance_configs_req_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersDeletePerInstanceConfigsReq" }, { "name": "retry", @@ -16566,13 +18666,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "shortName": "delete_per_instance_configs" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instance_group_manager_resize_requests_insert_sync.py", + "description": "Sample for DeletePerInstanceConfigs", + "file": "compute_v1_generated_instance_group_managers_delete_per_instance_configs_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_Insert_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_DeletePerInstanceConfigs_sync", "segments": [ { "end": 53, @@ -16605,28 +18705,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_manager_resize_requests_insert_sync.py" + "title": "compute_v1_generated_instance_group_managers_delete_per_instance_configs_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient", - "shortName": "InstanceGroupManagerResizeRequestsClient" + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", + "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagerResizeRequestsClient.list", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests.List", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Delete", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagerResizeRequests", - "shortName": "InstanceGroupManagerResizeRequests" + "fullName": "google.cloud.compute.v1.InstanceGroupManagers", + "shortName": "InstanceGroupManagers" }, - "shortName": "List" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstanceGroupManagerResizeRequestsRequest" + "type": "google.cloud.compute_v1.types.DeleteInstanceGroupManagerRequest" }, { "name": "project", @@ -16653,22 +18753,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_group_manager_resize_requests.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for List", - "file": "compute_v1_generated_instance_group_manager_resize_requests_list_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_instance_group_managers_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagerResizeRequests_List_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_Delete_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -16688,12 +18788,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 55, + "end": 54, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_manager_resize_requests_list_sync.py" + "title": "compute_v1_generated_instance_group_managers_delete_sync.py" }, { "canonical": true, @@ -16702,19 +18802,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.abandon_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.get", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.AbandonInstances", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Get", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "AbandonInstances" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AbandonInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.GetInstanceGroupManagerRequest" }, { "name": "project", @@ -16728,10 +18828,6 @@ "name": "instance_group_manager", "type": "str" }, - { - "name": "instance_group_managers_abandon_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersAbandonInstancesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -16745,14 +18841,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "abandon_instances" + "resultType": "google.cloud.compute_v1.types.InstanceGroupManager", + "shortName": "get" }, - "description": "Sample for AbandonInstances", - "file": "compute_v1_generated_instance_group_managers_abandon_instances_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_instance_group_managers_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_AbandonInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_Get_sync", "segments": [ { "end": 53, @@ -16785,7 +18881,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_abandon_instances_sync.py" + "title": "compute_v1_generated_instance_group_managers_get_sync.py" }, { "canonical": true, @@ -16794,24 +18890,32 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.aggregated_list", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.AggregatedList", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Insert", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "AggregatedList" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListInstanceGroupManagersRequest" + "type": "google.cloud.compute_v1.types.InsertInstanceGroupManagerRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group_manager_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManager" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -16825,14 +18929,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_instance_group_managers_aggregated_list_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instance_group_managers_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_AggregatedList_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_Insert_sync", "segments": [ { "end": 52, @@ -16850,22 +18954,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 49, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_aggregated_list_sync.py" + "title": "compute_v1_generated_instance_group_managers_insert_sync.py" }, { "canonical": true, @@ -16874,19 +18978,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.apply_updates_to_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list_errors", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ApplyUpdatesToInstances", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ListErrors", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "ApplyUpdatesToInstances" + "shortName": "ListErrors" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ApplyUpdatesToInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.ListErrorsInstanceGroupManagersRequest" }, { "name": "project", @@ -16900,10 +19004,6 @@ "name": "instance_group_manager", "type": "str" }, - { - "name": "instance_group_managers_apply_updates_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersApplyUpdatesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -16917,22 +19017,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "apply_updates_to_instances" + "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListErrorsPager", + "shortName": "list_errors" }, - "description": "Sample for ApplyUpdatesToInstances", - "file": "compute_v1_generated_instance_group_managers_apply_updates_to_instances_sync.py", + "description": "Sample for ListErrors", + "file": "compute_v1_generated_instance_group_managers_list_errors_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_ApplyUpdatesToInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_ListErrors_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -16952,12 +19052,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 55, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_apply_updates_to_instances_sync.py" + "title": "compute_v1_generated_instance_group_managers_list_errors_sync.py" }, { "canonical": true, @@ -16966,19 +19066,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.create_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list_managed_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.CreateInstances", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ListManagedInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "CreateInstances" + "shortName": "ListManagedInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.CreateInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.ListManagedInstancesInstanceGroupManagersRequest" }, { "name": "project", @@ -16992,10 +19092,6 @@ "name": "instance_group_manager", "type": "str" }, - { - "name": "instance_group_managers_create_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersCreateInstancesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17009,22 +19105,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "create_instances" + "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListManagedInstancesPager", + "shortName": "list_managed_instances" }, - "description": "Sample for CreateInstances", - "file": "compute_v1_generated_instance_group_managers_create_instances_sync.py", + "description": "Sample for ListManagedInstances", + "file": "compute_v1_generated_instance_group_managers_list_managed_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_CreateInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_ListManagedInstances_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -17044,12 +19140,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 55, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_create_instances_sync.py" + "title": "compute_v1_generated_instance_group_managers_list_managed_instances_sync.py" }, { "canonical": true, @@ -17058,19 +19154,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.delete_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list_per_instance_configs", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.DeleteInstances", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ListPerInstanceConfigs", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "DeleteInstances" + "shortName": "ListPerInstanceConfigs" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.ListPerInstanceConfigsInstanceGroupManagersRequest" }, { "name": "project", @@ -17084,10 +19180,6 @@ "name": "instance_group_manager", "type": "str" }, - { - "name": "instance_group_managers_delete_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersDeleteInstancesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17101,22 +19193,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete_instances" + "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListPerInstanceConfigsPager", + "shortName": "list_per_instance_configs" }, - "description": "Sample for DeleteInstances", - "file": "compute_v1_generated_instance_group_managers_delete_instances_sync.py", + "description": "Sample for ListPerInstanceConfigs", + "file": "compute_v1_generated_instance_group_managers_list_per_instance_configs_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_DeleteInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_ListPerInstanceConfigs_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -17136,12 +19228,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 55, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_delete_instances_sync.py" + "title": "compute_v1_generated_instance_group_managers_list_per_instance_configs_sync.py" }, { "canonical": true, @@ -17150,19 +19242,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.delete_per_instance_configs", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.DeletePerInstanceConfigs", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.List", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "DeletePerInstanceConfigs" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeletePerInstanceConfigsInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.ListInstanceGroupManagersRequest" }, { "name": "project", @@ -17172,14 +19264,6 @@ "name": "zone", "type": "str" }, - { - "name": "instance_group_manager", - "type": "str" - }, - { - "name": "instance_group_managers_delete_per_instance_configs_req_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersDeletePerInstanceConfigsReq" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17193,14 +19277,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete_per_instance_configs" + "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for DeletePerInstanceConfigs", - "file": "compute_v1_generated_instance_group_managers_delete_per_instance_configs_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_instance_group_managers_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_DeletePerInstanceConfigs_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_List_sync", "segments": [ { "end": 53, @@ -17218,22 +19302,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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_delete_per_instance_configs_sync.py" + "title": "compute_v1_generated_instance_group_managers_list_sync.py" }, { "canonical": true, @@ -17242,19 +19326,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.delete", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.patch_per_instance_configs", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Delete", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.PatchPerInstanceConfigs", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "Delete" + "shortName": "PatchPerInstanceConfigs" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.PatchPerInstanceConfigsInstanceGroupManagerRequest" }, { "name": "project", @@ -17268,6 +19352,10 @@ "name": "instance_group_manager", "type": "str" }, + { + "name": "instance_group_managers_patch_per_instance_configs_req_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersPatchPerInstanceConfigsReq" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17282,13 +19370,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "patch_per_instance_configs" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instance_group_managers_delete_sync.py", + "description": "Sample for PatchPerInstanceConfigs", + "file": "compute_v1_generated_instance_group_managers_patch_per_instance_configs_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_Delete_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_PatchPerInstanceConfigs_sync", "segments": [ { "end": 53, @@ -17321,7 +19409,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_delete_sync.py" + "title": "compute_v1_generated_instance_group_managers_patch_per_instance_configs_sync.py" }, { "canonical": true, @@ -17330,19 +19418,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.get", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.patch", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Get", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Patch", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "Get" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.PatchInstanceGroupManagerRequest" }, { "name": "project", @@ -17356,6 +19444,10 @@ "name": "instance_group_manager", "type": "str" }, + { + "name": "instance_group_manager_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManager" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17369,14 +19461,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstanceGroupManager", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instance_group_managers_get_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_instance_group_managers_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_Get_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_Patch_sync", "segments": [ { "end": 53, @@ -17409,7 +19501,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_get_sync.py" + "title": "compute_v1_generated_instance_group_managers_patch_sync.py" }, { "canonical": true, @@ -17418,19 +19510,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.insert", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.recreate_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Insert", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.RecreateInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "Insert" + "shortName": "RecreateInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.RecreateInstancesInstanceGroupManagerRequest" }, { "name": "project", @@ -17441,8 +19533,12 @@ "type": "str" }, { - "name": "instance_group_manager_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManager" + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "instance_group_managers_recreate_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersRecreateInstancesRequest" }, { "name": "retry", @@ -17458,21 +19554,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "shortName": "recreate_instances" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instance_group_managers_insert_sync.py", + "description": "Sample for RecreateInstances", + "file": "compute_v1_generated_instance_group_managers_recreate_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_Insert_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_RecreateInstances_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -17482,22 +19578,22 @@ "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_v1_generated_instance_group_managers_insert_sync.py" + "title": "compute_v1_generated_instance_group_managers_recreate_instances_sync.py" }, { "canonical": true, @@ -17506,19 +19602,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list_errors", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.resize", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ListErrors", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Resize", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "ListErrors" + "shortName": "Resize" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListErrorsInstanceGroupManagersRequest" + "type": "google.cloud.compute_v1.types.ResizeInstanceGroupManagerRequest" }, { "name": "project", @@ -17532,6 +19628,10 @@ "name": "instance_group_manager", "type": "str" }, + { + "name": "size", + "type": "int" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17545,14 +19645,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListErrorsPager", - "shortName": "list_errors" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "resize" }, - "description": "Sample for ListErrors", - "file": "compute_v1_generated_instance_group_managers_list_errors_sync.py", + "description": "Sample for Resize", + "file": "compute_v1_generated_instance_group_managers_resize_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_ListErrors_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_Resize_sync", "segments": [ { "end": 54, @@ -17570,22 +19670,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { "end": 55, - "start": 51, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_list_errors_sync.py" + "title": "compute_v1_generated_instance_group_managers_resize_sync.py" }, { "canonical": true, @@ -17594,19 +19694,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list_managed_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.resume_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ListManagedInstances", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ResumeInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "ListManagedInstances" + "shortName": "ResumeInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListManagedInstancesInstanceGroupManagersRequest" + "type": "google.cloud.compute_v1.types.ResumeInstancesInstanceGroupManagerRequest" }, { "name": "project", @@ -17620,6 +19720,10 @@ "name": "instance_group_manager", "type": "str" }, + { + "name": "instance_group_managers_resume_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersResumeInstancesRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17633,22 +19737,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListManagedInstancesPager", - "shortName": "list_managed_instances" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "resume_instances" }, - "description": "Sample for ListManagedInstances", - "file": "compute_v1_generated_instance_group_managers_list_managed_instances_sync.py", + "description": "Sample for ResumeInstances", + "file": "compute_v1_generated_instance_group_managers_resume_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_ListManagedInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_ResumeInstances_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -17668,12 +19772,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 55, + "end": 54, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_list_managed_instances_sync.py" + "title": "compute_v1_generated_instance_group_managers_resume_instances_sync.py" }, { "canonical": true, @@ -17682,19 +19786,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list_per_instance_configs", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.set_instance_template", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ListPerInstanceConfigs", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.SetInstanceTemplate", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "ListPerInstanceConfigs" + "shortName": "SetInstanceTemplate" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListPerInstanceConfigsInstanceGroupManagersRequest" + "type": "google.cloud.compute_v1.types.SetInstanceTemplateInstanceGroupManagerRequest" }, { "name": "project", @@ -17708,6 +19812,10 @@ "name": "instance_group_manager", "type": "str" }, + { + "name": "instance_group_managers_set_instance_template_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersSetInstanceTemplateRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17721,22 +19829,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListPerInstanceConfigsPager", - "shortName": "list_per_instance_configs" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_instance_template" }, - "description": "Sample for ListPerInstanceConfigs", - "file": "compute_v1_generated_instance_group_managers_list_per_instance_configs_sync.py", + "description": "Sample for SetInstanceTemplate", + "file": "compute_v1_generated_instance_group_managers_set_instance_template_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_ListPerInstanceConfigs_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_SetInstanceTemplate_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -17756,12 +19864,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 55, + "end": 54, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_list_per_instance_configs_sync.py" + "title": "compute_v1_generated_instance_group_managers_set_instance_template_sync.py" }, { "canonical": true, @@ -17770,19 +19878,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.list", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.set_target_pools", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.List", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.SetTargetPools", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "List" + "shortName": "SetTargetPools" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstanceGroupManagersRequest" + "type": "google.cloud.compute_v1.types.SetTargetPoolsInstanceGroupManagerRequest" }, { "name": "project", @@ -17792,6 +19900,14 @@ "name": "zone", "type": "str" }, + { + "name": "instance_group_manager", + "type": "str" + }, + { + "name": "instance_group_managers_set_target_pools_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersSetTargetPoolsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -17805,14 +19921,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_group_managers.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_target_pools" }, - "description": "Sample for List", - "file": "compute_v1_generated_instance_group_managers_list_sync.py", + "description": "Sample for SetTargetPools", + "file": "compute_v1_generated_instance_group_managers_set_target_pools_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_List_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_SetTargetPools_sync", "segments": [ { "end": 53, @@ -17830,22 +19946,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { "end": 54, - "start": 50, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_list_sync.py" + "title": "compute_v1_generated_instance_group_managers_set_target_pools_sync.py" }, { "canonical": true, @@ -17854,19 +19970,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.patch_per_instance_configs", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.start_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.PatchPerInstanceConfigs", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.StartInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "PatchPerInstanceConfigs" + "shortName": "StartInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchPerInstanceConfigsInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.StartInstancesInstanceGroupManagerRequest" }, { "name": "project", @@ -17881,8 +19997,8 @@ "type": "str" }, { - "name": "instance_group_managers_patch_per_instance_configs_req_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersPatchPerInstanceConfigsReq" + "name": "instance_group_managers_start_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersStartInstancesRequest" }, { "name": "retry", @@ -17898,13 +20014,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch_per_instance_configs" + "shortName": "start_instances" }, - "description": "Sample for PatchPerInstanceConfigs", - "file": "compute_v1_generated_instance_group_managers_patch_per_instance_configs_sync.py", + "description": "Sample for StartInstances", + "file": "compute_v1_generated_instance_group_managers_start_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_PatchPerInstanceConfigs_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_StartInstances_sync", "segments": [ { "end": 53, @@ -17937,7 +20053,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_patch_per_instance_configs_sync.py" + "title": "compute_v1_generated_instance_group_managers_start_instances_sync.py" }, { "canonical": true, @@ -17946,19 +20062,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.patch", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.stop_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Patch", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.StopInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "Patch" + "shortName": "StopInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.StopInstancesInstanceGroupManagerRequest" }, { "name": "project", @@ -17973,8 +20089,8 @@ "type": "str" }, { - "name": "instance_group_manager_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManager" + "name": "instance_group_managers_stop_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersStopInstancesRequest" }, { "name": "retry", @@ -17990,13 +20106,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "shortName": "stop_instances" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_instance_group_managers_patch_sync.py", + "description": "Sample for StopInstances", + "file": "compute_v1_generated_instance_group_managers_stop_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_Patch_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_StopInstances_sync", "segments": [ { "end": 53, @@ -18029,7 +20145,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_patch_sync.py" + "title": "compute_v1_generated_instance_group_managers_stop_instances_sync.py" }, { "canonical": true, @@ -18038,19 +20154,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.recreate_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.suspend_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.RecreateInstances", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.SuspendInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "RecreateInstances" + "shortName": "SuspendInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.RecreateInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.SuspendInstancesInstanceGroupManagerRequest" }, { "name": "project", @@ -18065,8 +20181,8 @@ "type": "str" }, { - "name": "instance_group_managers_recreate_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersRecreateInstancesRequest" + "name": "instance_group_managers_suspend_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersSuspendInstancesRequest" }, { "name": "retry", @@ -18082,13 +20198,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "recreate_instances" + "shortName": "suspend_instances" }, - "description": "Sample for RecreateInstances", - "file": "compute_v1_generated_instance_group_managers_recreate_instances_sync.py", + "description": "Sample for SuspendInstances", + "file": "compute_v1_generated_instance_group_managers_suspend_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_RecreateInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_SuspendInstances_sync", "segments": [ { "end": 53, @@ -18121,7 +20237,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_recreate_instances_sync.py" + "title": "compute_v1_generated_instance_group_managers_suspend_instances_sync.py" }, { "canonical": true, @@ -18130,19 +20246,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", "shortName": "InstanceGroupManagersClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.resize", + "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.update_per_instance_configs", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.Resize", + "fullName": "google.cloud.compute.v1.InstanceGroupManagers.UpdatePerInstanceConfigs", "service": { "fullName": "google.cloud.compute.v1.InstanceGroupManagers", "shortName": "InstanceGroupManagers" }, - "shortName": "Resize" + "shortName": "UpdatePerInstanceConfigs" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ResizeInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.UpdatePerInstanceConfigsInstanceGroupManagerRequest" }, { "name": "project", @@ -18157,8 +20273,8 @@ "type": "str" }, { - "name": "size", - "type": "int" + "name": "instance_group_managers_update_per_instance_configs_req_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupManagersUpdatePerInstanceConfigsReq" }, { "name": "retry", @@ -18174,21 +20290,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "resize" + "shortName": "update_per_instance_configs" }, - "description": "Sample for Resize", - "file": "compute_v1_generated_instance_group_managers_resize_sync.py", + "description": "Sample for UpdatePerInstanceConfigs", + "file": "compute_v1_generated_instance_group_managers_update_per_instance_configs_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_Resize_sync", + "regionTag": "compute_v1_generated_InstanceGroupManagers_UpdatePerInstanceConfigs_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -18198,43 +20314,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_resize_sync.py" + "title": "compute_v1_generated_instance_group_managers_update_per_instance_configs_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.resume_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.add_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.ResumeInstances", + "fullName": "google.cloud.compute.v1.InstanceGroups.AddInstances", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "ResumeInstances" + "shortName": "AddInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ResumeInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.AddInstancesInstanceGroupRequest" }, { "name": "project", @@ -18245,12 +20361,12 @@ "type": "str" }, { - "name": "instance_group_manager", + "name": "instance_group", "type": "str" }, { - "name": "instance_group_managers_resume_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersResumeInstancesRequest" + "name": "instance_groups_add_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupsAddInstancesRequest" }, { "name": "retry", @@ -18266,13 +20382,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "resume_instances" + "shortName": "add_instances" }, - "description": "Sample for ResumeInstances", - "file": "compute_v1_generated_instance_group_managers_resume_instances_sync.py", + "description": "Sample for AddInstances", + "file": "compute_v1_generated_instance_groups_add_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_ResumeInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroups_AddInstances_sync", "segments": [ { "end": 53, @@ -18305,45 +20421,33 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_resume_instances_sync.py" + "title": "compute_v1_generated_instance_groups_add_instances_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.set_instance_template", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.SetInstanceTemplate", + "fullName": "google.cloud.compute.v1.InstanceGroups.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "SetInstanceTemplate" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetInstanceTemplateInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.AggregatedListInstanceGroupsRequest" }, { "name": "project", "type": "str" }, - { - "name": "zone", - "type": "str" - }, - { - "name": "instance_group_manager", - "type": "str" - }, - { - "name": "instance_group_managers_set_instance_template_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersSetInstanceTemplateRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -18357,22 +20461,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_instance_template" + "resultType": "google.cloud.compute_v1.services.instance_groups.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for SetInstanceTemplate", - "file": "compute_v1_generated_instance_group_managers_set_instance_template_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_instance_groups_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_SetInstanceTemplate_sync", + "regionTag": "compute_v1_generated_InstanceGroups_AggregatedList_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -18382,43 +20486,43 @@ "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_v1_generated_instance_group_managers_set_instance_template_sync.py" + "title": "compute_v1_generated_instance_groups_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.set_target_pools", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.SetTargetPools", + "fullName": "google.cloud.compute.v1.InstanceGroups.Delete", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "SetTargetPools" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetTargetPoolsInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.DeleteInstanceGroupRequest" }, { "name": "project", @@ -18429,13 +20533,9 @@ "type": "str" }, { - "name": "instance_group_manager", + "name": "instance_group", "type": "str" }, - { - "name": "instance_group_managers_set_target_pools_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersSetTargetPoolsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -18450,13 +20550,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_target_pools" + "shortName": "delete" }, - "description": "Sample for SetTargetPools", - "file": "compute_v1_generated_instance_group_managers_set_target_pools_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_instance_groups_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_SetTargetPools_sync", + "regionTag": "compute_v1_generated_InstanceGroups_Delete_sync", "segments": [ { "end": 53, @@ -18489,28 +20589,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_set_target_pools_sync.py" + "title": "compute_v1_generated_instance_groups_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.start_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.StartInstances", + "fullName": "google.cloud.compute.v1.InstanceGroups.Get", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "StartInstances" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.StartInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.GetInstanceGroupRequest" }, { "name": "project", @@ -18521,13 +20621,9 @@ "type": "str" }, { - "name": "instance_group_manager", + "name": "instance_group", "type": "str" }, - { - "name": "instance_group_managers_start_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersStartInstancesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -18541,14 +20637,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "start_instances" + "resultType": "google.cloud.compute_v1.types.InstanceGroup", + "shortName": "get" }, - "description": "Sample for StartInstances", - "file": "compute_v1_generated_instance_group_managers_start_instances_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_instance_groups_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_StartInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroups_Get_sync", "segments": [ { "end": 53, @@ -18581,28 +20677,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_start_instances_sync.py" + "title": "compute_v1_generated_instance_groups_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.stop_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.StopInstances", + "fullName": "google.cloud.compute.v1.InstanceGroups.Insert", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "StopInstances" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.StopInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.InsertInstanceGroupRequest" }, { "name": "project", @@ -18613,12 +20709,8 @@ "type": "str" }, { - "name": "instance_group_manager", - "type": "str" - }, - { - "name": "instance_group_managers_stop_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersStopInstancesRequest" + "name": "instance_group_resource", + "type": "google.cloud.compute_v1.types.InstanceGroup" }, { "name": "retry", @@ -18634,21 +20726,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "stop_instances" + "shortName": "insert" }, - "description": "Sample for StopInstances", - "file": "compute_v1_generated_instance_group_managers_stop_instances_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instance_groups_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_StopInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroups_Insert_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -18658,43 +20750,43 @@ "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_v1_generated_instance_group_managers_stop_instances_sync.py" + "title": "compute_v1_generated_instance_groups_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.suspend_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.list_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.SuspendInstances", + "fullName": "google.cloud.compute.v1.InstanceGroups.ListInstances", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "SuspendInstances" + "shortName": "ListInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SuspendInstancesInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.ListInstancesInstanceGroupsRequest" }, { "name": "project", @@ -18705,12 +20797,12 @@ "type": "str" }, { - "name": "instance_group_manager", + "name": "instance_group", "type": "str" }, { - "name": "instance_group_managers_suspend_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersSuspendInstancesRequest" + "name": "instance_groups_list_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupsListInstancesRequest" }, { "name": "retry", @@ -18725,22 +20817,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "suspend_instances" + "resultType": "google.cloud.compute_v1.services.instance_groups.pagers.ListInstancesPager", + "shortName": "list_instances" }, - "description": "Sample for SuspendInstances", - "file": "compute_v1_generated_instance_group_managers_suspend_instances_sync.py", + "description": "Sample for ListInstances", + "file": "compute_v1_generated_instance_groups_list_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_SuspendInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroups_ListInstances_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -18760,33 +20852,33 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 55, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_suspend_instances_sync.py" + "title": "compute_v1_generated_instance_groups_list_instances_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient", - "shortName": "InstanceGroupManagersClient" + "fullName": "google.cloud.compute_v1.InstanceGroupsClient", + "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupManagersClient.update_per_instance_configs", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers.UpdatePerInstanceConfigs", + "fullName": "google.cloud.compute.v1.InstanceGroups.List", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroupManagers", - "shortName": "InstanceGroupManagers" + "fullName": "google.cloud.compute.v1.InstanceGroups", + "shortName": "InstanceGroups" }, - "shortName": "UpdatePerInstanceConfigs" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdatePerInstanceConfigsInstanceGroupManagerRequest" + "type": "google.cloud.compute_v1.types.ListInstanceGroupsRequest" }, { "name": "project", @@ -18796,14 +20888,6 @@ "name": "zone", "type": "str" }, - { - "name": "instance_group_manager", - "type": "str" - }, - { - "name": "instance_group_managers_update_per_instance_configs_req_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupManagersUpdatePerInstanceConfigsReq" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -18817,14 +20901,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update_per_instance_configs" + "resultType": "google.cloud.compute_v1.services.instance_groups.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for UpdatePerInstanceConfigs", - "file": "compute_v1_generated_instance_group_managers_update_per_instance_configs_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_instance_groups_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroupManagers_UpdatePerInstanceConfigs_sync", + "regionTag": "compute_v1_generated_InstanceGroups_List_sync", "segments": [ { "end": 53, @@ -18842,22 +20926,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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_group_managers_update_per_instance_configs_sync.py" + "title": "compute_v1_generated_instance_groups_list_sync.py" }, { "canonical": true, @@ -18866,19 +20950,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupsClient", "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.add_instances", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.remove_instances", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.AddInstances", + "fullName": "google.cloud.compute.v1.InstanceGroups.RemoveInstances", "service": { "fullName": "google.cloud.compute.v1.InstanceGroups", "shortName": "InstanceGroups" }, - "shortName": "AddInstances" + "shortName": "RemoveInstances" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AddInstancesInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.RemoveInstancesInstanceGroupRequest" }, { "name": "project", @@ -18893,8 +20977,8 @@ "type": "str" }, { - "name": "instance_groups_add_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupsAddInstancesRequest" + "name": "instance_groups_remove_instances_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupsRemoveInstancesRequest" }, { "name": "retry", @@ -18910,13 +20994,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "add_instances" + "shortName": "remove_instances" }, - "description": "Sample for AddInstances", - "file": "compute_v1_generated_instance_groups_add_instances_sync.py", + "description": "Sample for RemoveInstances", + "file": "compute_v1_generated_instance_groups_remove_instances_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_AddInstances_sync", + "regionTag": "compute_v1_generated_InstanceGroups_RemoveInstances_sync", "segments": [ { "end": 53, @@ -18949,7 +21033,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_groups_add_instances_sync.py" + "title": "compute_v1_generated_instance_groups_remove_instances_sync.py" }, { "canonical": true, @@ -18958,24 +21042,36 @@ "fullName": "google.cloud.compute_v1.InstanceGroupsClient", "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.aggregated_list", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.set_named_ports", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.AggregatedList", + "fullName": "google.cloud.compute.v1.InstanceGroups.SetNamedPorts", "service": { "fullName": "google.cloud.compute.v1.InstanceGroups", "shortName": "InstanceGroups" }, - "shortName": "AggregatedList" + "shortName": "SetNamedPorts" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListInstanceGroupsRequest" + "type": "google.cloud.compute_v1.types.SetNamedPortsInstanceGroupRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance_group", + "type": "str" + }, + { + "name": "instance_groups_set_named_ports_request_resource", + "type": "google.cloud.compute_v1.types.InstanceGroupsSetNamedPortsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -18989,22 +21085,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_groups.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_named_ports" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_instance_groups_aggregated_list_sync.py", + "description": "Sample for SetNamedPorts", + "file": "compute_v1_generated_instance_groups_set_named_ports_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_AggregatedList_sync", + "regionTag": "compute_v1_generated_InstanceGroups_SetNamedPorts_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -19014,22 +21110,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_v1_generated_instance_groups_aggregated_list_sync.py" + "title": "compute_v1_generated_instance_groups_set_named_ports_sync.py" }, { "canonical": true, @@ -19038,19 +21134,19 @@ "fullName": "google.cloud.compute_v1.InstanceGroupsClient", "shortName": "InstanceGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.delete", + "fullName": "google.cloud.compute_v1.InstanceGroupsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.Delete", + "fullName": "google.cloud.compute.v1.InstanceGroups.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.InstanceGroups", "shortName": "InstanceGroups" }, - "shortName": "Delete" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInstanceGroupRequest" }, { "name": "project", @@ -19061,9 +21157,13 @@ "type": "str" }, { - "name": "instance_group", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19077,14 +21177,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instance_groups_delete_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_instance_groups_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_Delete_sync", + "regionTag": "compute_v1_generated_InstanceGroups_TestIamPermissions_sync", "segments": [ { "end": 53, @@ -19117,28 +21217,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_groups_delete_sync.py" + "title": "compute_v1_generated_instance_groups_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient", + "shortName": "InstanceSettingsServiceClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.get", + "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient.get", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.Get", + "fullName": "google.cloud.compute.v1.InstanceSettingsService.Get", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceSettingsService", + "shortName": "InstanceSettingsService" }, "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.GetInstanceSettingRequest" }, { "name": "project", @@ -19148,10 +21248,6 @@ "name": "zone", "type": "str" }, - { - "name": "instance_group", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19165,22 +21261,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstanceGroup", + "resultType": "google.cloud.compute_v1.types.InstanceSettings", "shortName": "get" }, "description": "Sample for Get", - "file": "compute_v1_generated_instance_groups_get_sync.py", + "file": "compute_v1_generated_instance_settings_service_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_Get_sync", + "regionTag": "compute_v1_generated_InstanceSettingsService_Get_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -19190,43 +21286,43 @@ "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_v1_generated_instance_groups_get_sync.py" + "title": "compute_v1_generated_instance_settings_service_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient", + "shortName": "InstanceSettingsServiceClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.insert", + "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient.patch", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.Insert", + "fullName": "google.cloud.compute.v1.InstanceSettingsService.Patch", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceSettingsService", + "shortName": "InstanceSettingsService" }, - "shortName": "Insert" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.PatchInstanceSettingRequest" }, { "name": "project", @@ -19237,8 +21333,8 @@ "type": "str" }, { - "name": "instance_group_resource", - "type": "google.cloud.compute_v1.types.InstanceGroup" + "name": "instance_settings_resource", + "type": "google.cloud.compute_v1.types.InstanceSettings" }, { "name": "retry", @@ -19254,13 +21350,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "shortName": "patch" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instance_groups_insert_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_instance_settings_service_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_Insert_sync", + "regionTag": "compute_v1_generated_InstanceSettingsService_Patch_sync", "segments": [ { "end": 52, @@ -19293,45 +21389,33 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_groups_insert_sync.py" + "title": "compute_v1_generated_instance_settings_service_patch_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.list_instances", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.ListInstances", + "fullName": "google.cloud.compute.v1.InstanceTemplates.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "ListInstances" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstancesInstanceGroupsRequest" + "type": "google.cloud.compute_v1.types.AggregatedListInstanceTemplatesRequest" }, { "name": "project", "type": "str" }, - { - "name": "zone", - "type": "str" - }, - { - "name": "instance_group", - "type": "str" - }, - { - "name": "instance_groups_list_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupsListInstancesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19345,22 +21429,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_groups.pagers.ListInstancesPager", - "shortName": "list_instances" + "resultType": "google.cloud.compute_v1.services.instance_templates.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for ListInstances", - "file": "compute_v1_generated_instance_groups_list_instances_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_instance_templates_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_ListInstances_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_AggregatedList_sync", "segments": [ { - "end": 54, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 52, "start": 27, "type": "SHORT" }, @@ -19370,50 +21454,50 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 51, + "end": 53, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_groups_list_instances_sync.py" + "title": "compute_v1_generated_instance_templates_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.list", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.List", + "fullName": "google.cloud.compute.v1.InstanceTemplates.Delete", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "List" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstanceGroupsRequest" + "type": "google.cloud.compute_v1.types.DeleteInstanceTemplateRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", + "name": "instance_template", "type": "str" }, { @@ -19429,22 +21513,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_groups.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for List", - "file": "compute_v1_generated_instance_groups_list_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_instance_templates_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_List_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_Delete_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -19464,50 +21548,42 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 53, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_groups_list_sync.py" + "title": "compute_v1_generated_instance_templates_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.remove_instances", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.RemoveInstances", + "fullName": "google.cloud.compute.v1.InstanceTemplates.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "RemoveInstances" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.RemoveInstancesInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyInstanceTemplateRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "instance_group", + "name": "resource", "type": "str" }, - { - "name": "instance_groups_remove_instances_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupsRemoveInstancesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19521,22 +21597,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "remove_instances" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for RemoveInstances", - "file": "compute_v1_generated_instance_groups_remove_instances_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_instance_templates_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_RemoveInstances_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_GetIamPolicy_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -19546,60 +21622,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_v1_generated_instance_groups_remove_instances_sync.py" + "title": "compute_v1_generated_instance_templates_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.set_named_ports", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.get", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.SetNamedPorts", + "fullName": "google.cloud.compute.v1.InstanceTemplates.Get", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "SetNamedPorts" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetNamedPortsInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.GetInstanceTemplateRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "instance_group", + "name": "instance_template", "type": "str" }, - { - "name": "instance_groups_set_named_ports_request_resource", - "type": "google.cloud.compute_v1.types.InstanceGroupsSetNamedPortsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19613,22 +21681,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_named_ports" + "resultType": "google.cloud.compute_v1.types.InstanceTemplate", + "shortName": "get" }, - "description": "Sample for SetNamedPorts", - "file": "compute_v1_generated_instance_groups_set_named_ports_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_instance_templates_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_SetNamedPorts_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_Get_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -19638,59 +21706,51 @@ "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_v1_generated_instance_groups_set_named_ports_sync.py" + "title": "compute_v1_generated_instance_templates_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceGroupsClient", - "shortName": "InstanceGroupsClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceGroupsClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InstanceGroups.TestIamPermissions", + "fullName": "google.cloud.compute.v1.InstanceTemplates.Insert", "service": { - "fullName": "google.cloud.compute.v1.InstanceGroups", - "shortName": "InstanceGroups" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "TestIamPermissions" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInstanceGroupRequest" + "type": "google.cloud.compute_v1.types.InsertInstanceTemplateRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "resource", - "type": "str" - }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + "name": "instance_template_resource", + "type": "google.cloud.compute_v1.types.InstanceTemplate" }, { "name": "retry", @@ -19705,22 +21765,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_instance_groups_test_iam_permissions_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instance_templates_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceGroups_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_Insert_sync", "segments": [ { - "end": 53, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 51, "start": 27, "type": "SHORT" }, @@ -19730,52 +21790,48 @@ "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": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_groups_test_iam_permissions_sync.py" + "title": "compute_v1_generated_instance_templates_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient", - "shortName": "InstanceSettingsServiceClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient.get", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.list", "method": { - "fullName": "google.cloud.compute.v1.InstanceSettingsService.Get", + "fullName": "google.cloud.compute.v1.InstanceTemplates.List", "service": { - "fullName": "google.cloud.compute.v1.InstanceSettingsService", - "shortName": "InstanceSettingsService" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "Get" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstanceSettingRequest" + "type": "google.cloud.compute_v1.types.ListInstanceTemplatesRequest" }, { "name": "project", "type": "str" }, - { - "name": "zone", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19789,14 +21845,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstanceSettings", - "shortName": "get" + "resultType": "google.cloud.compute_v1.services.instance_templates.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instance_settings_service_get_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_instance_templates_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceSettingsService_Get_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_List_sync", "segments": [ { "end": 52, @@ -19814,55 +21870,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_settings_service_get_sync.py" + "title": "compute_v1_generated_instance_templates_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient", - "shortName": "InstanceSettingsServiceClient" + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", + "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceSettingsServiceClient.patch", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InstanceSettingsService.Patch", + "fullName": "google.cloud.compute.v1.InstanceTemplates.SetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.InstanceSettingsService", - "shortName": "InstanceSettingsService" + "fullName": "google.cloud.compute.v1.InstanceTemplates", + "shortName": "InstanceTemplates" }, - "shortName": "Patch" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchInstanceSettingRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyInstanceTemplateRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", + "name": "resource", "type": "str" }, { - "name": "instance_settings_resource", - "type": "google.cloud.compute_v1.types.InstanceSettings" + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" }, { "name": "retry", @@ -19877,14 +21933,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "set_iam_policy" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_instance_settings_service_patch_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_instance_templates_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceSettingsService_Patch_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_SetIamPolicy_sync", "segments": [ { "end": 52, @@ -19917,7 +21973,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_settings_service_patch_sync.py" + "title": "compute_v1_generated_instance_templates_set_iam_policy_sync.py" }, { "canonical": true, @@ -19926,24 +21982,32 @@ "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", "shortName": "InstanceTemplatesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.aggregated_list", + "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.AggregatedList", + "fullName": "google.cloud.compute.v1.InstanceTemplates.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.InstanceTemplates", "shortName": "InstanceTemplates" }, - "shortName": "AggregatedList" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListInstanceTemplatesRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInstanceTemplateRequest" }, { "name": "project", "type": "str" }, + { + "name": "resource", + "type": "str" + }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -19957,14 +22021,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_templates.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_instance_templates_aggregated_list_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_instance_templates_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_AggregatedList_sync", + "regionTag": "compute_v1_generated_InstanceTemplates_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -19982,52 +22046,64 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 49, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_templates_aggregated_list_sync.py" + "title": "compute_v1_generated_instance_templates_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.delete", + "fullName": "google.cloud.compute_v1.InstancesClient.add_access_config", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.Delete", + "fullName": "google.cloud.compute.v1.Instances.AddAccessConfig", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "Delete" + "shortName": "AddAccessConfig" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstanceTemplateRequest" + "type": "google.cloud.compute_v1.types.AddAccessConfigInstanceRequest" }, { "name": "project", "type": "str" }, { - "name": "instance_template", + "name": "zone", + "type": "str" + }, + { + "name": "instance", + "type": "str" + }, + { + "name": "network_interface", "type": "str" }, + { + "name": "access_config_resource", + "type": "google.cloud.compute_v1.types.AccessConfig" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20042,21 +22118,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "add_access_config" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instance_templates_delete_sync.py", + "description": "Sample for AddAccessConfig", + "file": "compute_v1_generated_instances_add_access_config_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_Delete_sync", + "regionTag": "compute_v1_generated_Instances_AddAccessConfig_sync", "segments": [ { - "end": 52, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 54, "start": 27, "type": "SHORT" }, @@ -20066,52 +22142,60 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_templates_delete_sync.py" + "title": "compute_v1_generated_instances_add_access_config_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.InstancesClient.add_network_interface", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.GetIamPolicy", + "fullName": "google.cloud.compute.v1.Instances.AddNetworkInterface", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "GetIamPolicy" + "shortName": "AddNetworkInterface" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyInstanceTemplateRequest" + "type": "google.cloud.compute_v1.types.AddNetworkInterfaceInstanceRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "zone", + "type": "str" + }, + { + "name": "instance", "type": "str" }, + { + "name": "network_interface_resource", + "type": "google.cloud.compute_v1.types.NetworkInterface" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20125,22 +22209,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "add_network_interface" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_instance_templates_get_iam_policy_sync.py", + "description": "Sample for AddNetworkInterface", + "file": "compute_v1_generated_instances_add_network_interface_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_Instances_AddNetworkInterface_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -20150,52 +22234,60 @@ "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_v1_generated_instance_templates_get_iam_policy_sync.py" + "title": "compute_v1_generated_instances_add_network_interface_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.get", + "fullName": "google.cloud.compute_v1.InstancesClient.add_resource_policies", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.Get", + "fullName": "google.cloud.compute.v1.Instances.AddResourcePolicies", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "Get" + "shortName": "AddResourcePolicies" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstanceTemplateRequest" + "type": "google.cloud.compute_v1.types.AddResourcePoliciesInstanceRequest" }, { "name": "project", "type": "str" }, { - "name": "instance_template", + "name": "zone", + "type": "str" + }, + { + "name": "instance", "type": "str" }, + { + "name": "instances_add_resource_policies_request_resource", + "type": "google.cloud.compute_v1.types.InstancesAddResourcePoliciesRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20209,22 +22301,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstanceTemplate", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "add_resource_policies" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instance_templates_get_sync.py", + "description": "Sample for AddResourcePolicies", + "file": "compute_v1_generated_instances_add_resource_policies_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_Get_sync", + "regionTag": "compute_v1_generated_Instances_AddResourcePolicies_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -20234,52 +22326,48 @@ "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_v1_generated_instance_templates_get_sync.py" + "title": "compute_v1_generated_instances_add_resource_policies_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.insert", + "fullName": "google.cloud.compute_v1.InstancesClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.Insert", + "fullName": "google.cloud.compute.v1.Instances.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "Insert" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstanceTemplateRequest" + "type": "google.cloud.compute_v1.types.AggregatedListInstancesRequest" }, { "name": "project", "type": "str" }, - { - "name": "instance_template_resource", - "type": "google.cloud.compute_v1.types.InstanceTemplate" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20293,22 +22381,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.services.instances.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instance_templates_insert_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_instances_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_Insert_sync", + "regionTag": "compute_v1_generated_Instances_AggregatedList_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -20328,38 +22416,50 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_templates_insert_sync.py" + "title": "compute_v1_generated_instances_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.list", + "fullName": "google.cloud.compute_v1.InstancesClient.attach_disk", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.List", + "fullName": "google.cloud.compute.v1.Instances.AttachDisk", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "List" + "shortName": "AttachDisk" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstanceTemplatesRequest" + "type": "google.cloud.compute_v1.types.AttachDiskInstanceRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance", + "type": "str" + }, + { + "name": "attached_disk_resource", + "type": "google.cloud.compute_v1.types.AttachedDisk" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20373,22 +22473,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instance_templates.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "attach_disk" }, - "description": "Sample for List", - "file": "compute_v1_generated_instance_templates_list_sync.py", + "description": "Sample for AttachDisk", + "file": "compute_v1_generated_instances_attach_disk_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_List_sync", + "regionTag": "compute_v1_generated_Instances_AttachDisk_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -20398,55 +22498,55 @@ "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_v1_generated_instance_templates_list_sync.py" + "title": "compute_v1_generated_instances_attach_disk_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.InstancesClient.bulk_insert", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.SetIamPolicy", + "fullName": "google.cloud.compute.v1.Instances.BulkInsert", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "SetIamPolicy" + "shortName": "BulkInsert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyInstanceTemplateRequest" + "type": "google.cloud.compute_v1.types.BulkInsertInstanceRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "zone", "type": "str" }, { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + "name": "bulk_insert_instance_resource_resource", + "type": "google.cloud.compute_v1.types.BulkInsertInstanceResource" }, { "name": "retry", @@ -20461,14 +22561,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "bulk_insert" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_instance_templates_set_iam_policy_sync.py", + "description": "Sample for BulkInsert", + "file": "compute_v1_generated_instances_bulk_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_Instances_BulkInsert_sync", "segments": [ { "end": 52, @@ -20501,40 +22601,48 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_templates_set_iam_policy_sync.py" + "title": "compute_v1_generated_instances_bulk_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient", - "shortName": "InstanceTemplatesClient" + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstanceTemplatesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InstancesClient.delete_access_config", "method": { - "fullName": "google.cloud.compute.v1.InstanceTemplates.TestIamPermissions", + "fullName": "google.cloud.compute.v1.Instances.DeleteAccessConfig", "service": { - "fullName": "google.cloud.compute.v1.InstanceTemplates", - "shortName": "InstanceTemplates" + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" }, - "shortName": "TestIamPermissions" + "shortName": "DeleteAccessConfig" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInstanceTemplateRequest" + "type": "google.cloud.compute_v1.types.DeleteAccessConfigInstanceRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "zone", "type": "str" }, { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + "name": "instance", + "type": "str" + }, + { + "name": "access_config", + "type": "str" + }, + { + "name": "network_interface", + "type": "str" }, { "name": "retry", @@ -20549,22 +22657,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete_access_config" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_instance_templates_test_iam_permissions_sync.py", + "description": "Sample for DeleteAccessConfig", + "file": "compute_v1_generated_instances_delete_access_config_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstanceTemplates_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_Instances_DeleteAccessConfig_sync", "segments": [ { - "end": 52, + "end": 55, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 55, "start": 27, "type": "SHORT" }, @@ -20574,22 +22682,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 49, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 52, + "start": 50, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 56, + "start": 53, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instance_templates_test_iam_permissions_sync.py" + "title": "compute_v1_generated_instances_delete_access_config_sync.py" }, { "canonical": true, @@ -20598,19 +22706,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.add_access_config", + "fullName": "google.cloud.compute_v1.InstancesClient.delete_network_interface", "method": { - "fullName": "google.cloud.compute.v1.Instances.AddAccessConfig", + "fullName": "google.cloud.compute.v1.Instances.DeleteNetworkInterface", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "AddAccessConfig" + "shortName": "DeleteNetworkInterface" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AddAccessConfigInstanceRequest" + "type": "google.cloud.compute_v1.types.DeleteNetworkInterfaceInstanceRequest" }, { "name": "project", @@ -20625,13 +22733,9 @@ "type": "str" }, { - "name": "network_interface", + "name": "network_interface_name", "type": "str" }, - { - "name": "access_config_resource", - "type": "google.cloud.compute_v1.types.AccessConfig" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20646,13 +22750,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "add_access_config" + "shortName": "delete_network_interface" }, - "description": "Sample for AddAccessConfig", - "file": "compute_v1_generated_instances_add_access_config_sync.py", + "description": "Sample for DeleteNetworkInterface", + "file": "compute_v1_generated_instances_delete_network_interface_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_AddAccessConfig_sync", + "regionTag": "compute_v1_generated_Instances_DeleteNetworkInterface_sync", "segments": [ { "end": 54, @@ -20685,7 +22789,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_add_access_config_sync.py" + "title": "compute_v1_generated_instances_delete_network_interface_sync.py" }, { "canonical": true, @@ -20694,19 +22798,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.add_network_interface", + "fullName": "google.cloud.compute_v1.InstancesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Instances.AddNetworkInterface", + "fullName": "google.cloud.compute.v1.Instances.Delete", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "AddNetworkInterface" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AddNetworkInterfaceInstanceRequest" + "type": "google.cloud.compute_v1.types.DeleteInstanceRequest" }, { "name": "project", @@ -20720,10 +22824,6 @@ "name": "instance", "type": "str" }, - { - "name": "network_interface_resource", - "type": "google.cloud.compute_v1.types.NetworkInterface" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20738,13 +22838,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "add_network_interface" + "shortName": "delete" }, - "description": "Sample for AddNetworkInterface", - "file": "compute_v1_generated_instances_add_network_interface_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_instances_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_AddNetworkInterface_sync", + "regionTag": "compute_v1_generated_Instances_Delete_sync", "segments": [ { "end": 53, @@ -20777,7 +22877,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_add_network_interface_sync.py" + "title": "compute_v1_generated_instances_delete_sync.py" }, { "canonical": true, @@ -20786,19 +22886,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.add_resource_policies", + "fullName": "google.cloud.compute_v1.InstancesClient.detach_disk", "method": { - "fullName": "google.cloud.compute.v1.Instances.AddResourcePolicies", + "fullName": "google.cloud.compute.v1.Instances.DetachDisk", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "AddResourcePolicies" + "shortName": "DetachDisk" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AddResourcePoliciesInstanceRequest" + "type": "google.cloud.compute_v1.types.DetachDiskInstanceRequest" }, { "name": "project", @@ -20813,8 +22913,8 @@ "type": "str" }, { - "name": "instances_add_resource_policies_request_resource", - "type": "google.cloud.compute_v1.types.InstancesAddResourcePoliciesRequest" + "name": "device_name", + "type": "str" }, { "name": "retry", @@ -20830,21 +22930,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "add_resource_policies" + "shortName": "detach_disk" }, - "description": "Sample for AddResourcePolicies", - "file": "compute_v1_generated_instances_add_resource_policies_sync.py", + "description": "Sample for DetachDisk", + "file": "compute_v1_generated_instances_detach_disk_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_AddResourcePolicies_sync", + "regionTag": "compute_v1_generated_Instances_DetachDisk_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -20854,22 +22954,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_add_resource_policies_sync.py" + "title": "compute_v1_generated_instances_detach_disk_sync.py" }, { "canonical": true, @@ -20878,24 +22978,36 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.aggregated_list", + "fullName": "google.cloud.compute_v1.InstancesClient.get_effective_firewalls", "method": { - "fullName": "google.cloud.compute.v1.Instances.AggregatedList", + "fullName": "google.cloud.compute.v1.Instances.GetEffectiveFirewalls", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "AggregatedList" + "shortName": "GetEffectiveFirewalls" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListInstancesRequest" + "type": "google.cloud.compute_v1.types.GetEffectiveFirewallsInstanceRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance", + "type": "str" + }, + { + "name": "network_interface", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -20909,22 +23021,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instances.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.cloud.compute_v1.types.InstancesGetEffectiveFirewallsResponse", + "shortName": "get_effective_firewalls" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_instances_aggregated_list_sync.py", + "description": "Sample for GetEffectiveFirewalls", + "file": "compute_v1_generated_instances_get_effective_firewalls_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_AggregatedList_sync", + "regionTag": "compute_v1_generated_Instances_GetEffectiveFirewalls_sync", "segments": [ { - "end": 52, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 54, "start": 27, "type": "SHORT" }, @@ -20934,22 +23046,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 49, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_aggregated_list_sync.py" + "title": "compute_v1_generated_instances_get_effective_firewalls_sync.py" }, { "canonical": true, @@ -20958,19 +23070,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.attach_disk", + "fullName": "google.cloud.compute_v1.InstancesClient.get_guest_attributes", "method": { - "fullName": "google.cloud.compute.v1.Instances.AttachDisk", + "fullName": "google.cloud.compute.v1.Instances.GetGuestAttributes", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "AttachDisk" + "shortName": "GetGuestAttributes" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AttachDiskInstanceRequest" + "type": "google.cloud.compute_v1.types.GetGuestAttributesInstanceRequest" }, { "name": "project", @@ -20984,10 +23096,6 @@ "name": "instance", "type": "str" }, - { - "name": "attached_disk_resource", - "type": "google.cloud.compute_v1.types.AttachedDisk" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -21001,14 +23109,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "attach_disk" + "resultType": "google.cloud.compute_v1.types.GuestAttributes", + "shortName": "get_guest_attributes" }, - "description": "Sample for AttachDisk", - "file": "compute_v1_generated_instances_attach_disk_sync.py", + "description": "Sample for GetGuestAttributes", + "file": "compute_v1_generated_instances_get_guest_attributes_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_AttachDisk_sync", + "regionTag": "compute_v1_generated_Instances_GetGuestAttributes_sync", "segments": [ { "end": 53, @@ -21041,7 +23149,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_attach_disk_sync.py" + "title": "compute_v1_generated_instances_get_guest_attributes_sync.py" }, { "canonical": true, @@ -21050,19 +23158,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.bulk_insert", + "fullName": "google.cloud.compute_v1.InstancesClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Instances.BulkInsert", + "fullName": "google.cloud.compute.v1.Instances.GetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "BulkInsert" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.BulkInsertInstanceRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyInstanceRequest" }, { "name": "project", @@ -21073,8 +23181,8 @@ "type": "str" }, { - "name": "bulk_insert_instance_resource_resource", - "type": "google.cloud.compute_v1.types.BulkInsertInstanceResource" + "name": "resource", + "type": "str" }, { "name": "retry", @@ -21089,22 +23197,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "bulk_insert" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for BulkInsert", - "file": "compute_v1_generated_instances_bulk_insert_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_instances_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_BulkInsert_sync", + "regionTag": "compute_v1_generated_Instances_GetIamPolicy_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -21114,22 +23222,22 @@ "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_v1_generated_instances_bulk_insert_sync.py" + "title": "compute_v1_generated_instances_get_iam_policy_sync.py" }, { "canonical": true, @@ -21138,19 +23246,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.delete_access_config", + "fullName": "google.cloud.compute_v1.InstancesClient.get_screenshot", "method": { - "fullName": "google.cloud.compute.v1.Instances.DeleteAccessConfig", + "fullName": "google.cloud.compute.v1.Instances.GetScreenshot", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "DeleteAccessConfig" + "shortName": "GetScreenshot" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteAccessConfigInstanceRequest" + "type": "google.cloud.compute_v1.types.GetScreenshotInstanceRequest" }, { "name": "project", @@ -21164,14 +23272,6 @@ "name": "instance", "type": "str" }, - { - "name": "access_config", - "type": "str" - }, - { - "name": "network_interface", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -21185,22 +23285,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete_access_config" + "resultType": "google.cloud.compute_v1.types.Screenshot", + "shortName": "get_screenshot" }, - "description": "Sample for DeleteAccessConfig", - "file": "compute_v1_generated_instances_delete_access_config_sync.py", + "description": "Sample for GetScreenshot", + "file": "compute_v1_generated_instances_get_screenshot_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_DeleteAccessConfig_sync", + "regionTag": "compute_v1_generated_Instances_GetScreenshot_sync", "segments": [ { - "end": 55, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 53, "start": 27, "type": "SHORT" }, @@ -21210,22 +23310,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 49, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 52, - "start": 50, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_delete_access_config_sync.py" + "title": "compute_v1_generated_instances_get_screenshot_sync.py" }, { "canonical": true, @@ -21234,19 +23334,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.delete_network_interface", + "fullName": "google.cloud.compute_v1.InstancesClient.get_serial_port_output", "method": { - "fullName": "google.cloud.compute.v1.Instances.DeleteNetworkInterface", + "fullName": "google.cloud.compute.v1.Instances.GetSerialPortOutput", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "DeleteNetworkInterface" + "shortName": "GetSerialPortOutput" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteNetworkInterfaceInstanceRequest" + "type": "google.cloud.compute_v1.types.GetSerialPortOutputInstanceRequest" }, { "name": "project", @@ -21260,10 +23360,6 @@ "name": "instance", "type": "str" }, - { - "name": "network_interface_name", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -21277,22 +23373,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete_network_interface" + "resultType": "google.cloud.compute_v1.types.SerialPortOutput", + "shortName": "get_serial_port_output" }, - "description": "Sample for DeleteNetworkInterface", - "file": "compute_v1_generated_instances_delete_network_interface_sync.py", + "description": "Sample for GetSerialPortOutput", + "file": "compute_v1_generated_instances_get_serial_port_output_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_DeleteNetworkInterface_sync", + "regionTag": "compute_v1_generated_Instances_GetSerialPortOutput_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -21302,22 +23398,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_delete_network_interface_sync.py" + "title": "compute_v1_generated_instances_get_serial_port_output_sync.py" }, { "canonical": true, @@ -21326,19 +23422,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.delete", + "fullName": "google.cloud.compute_v1.InstancesClient.get_shielded_instance_identity", "method": { - "fullName": "google.cloud.compute.v1.Instances.Delete", + "fullName": "google.cloud.compute.v1.Instances.GetShieldedInstanceIdentity", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Delete" + "shortName": "GetShieldedInstanceIdentity" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstanceRequest" + "type": "google.cloud.compute_v1.types.GetShieldedInstanceIdentityInstanceRequest" }, { "name": "project", @@ -21365,14 +23461,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.types.ShieldedInstanceIdentity", + "shortName": "get_shielded_instance_identity" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instances_delete_sync.py", + "description": "Sample for GetShieldedInstanceIdentity", + "file": "compute_v1_generated_instances_get_shielded_instance_identity_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Delete_sync", + "regionTag": "compute_v1_generated_Instances_GetShieldedInstanceIdentity_sync", "segments": [ { "end": 53, @@ -21405,7 +23501,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_delete_sync.py" + "title": "compute_v1_generated_instances_get_shielded_instance_identity_sync.py" }, { "canonical": true, @@ -21414,19 +23510,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.detach_disk", + "fullName": "google.cloud.compute_v1.InstancesClient.get", "method": { - "fullName": "google.cloud.compute.v1.Instances.DetachDisk", + "fullName": "google.cloud.compute.v1.Instances.Get", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "DetachDisk" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DetachDiskInstanceRequest" + "type": "google.cloud.compute_v1.types.GetInstanceRequest" }, { "name": "project", @@ -21440,10 +23536,6 @@ "name": "instance", "type": "str" }, - { - "name": "device_name", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -21457,22 +23549,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "detach_disk" + "resultType": "google.cloud.compute_v1.types.Instance", + "shortName": "get" }, - "description": "Sample for DetachDisk", - "file": "compute_v1_generated_instances_detach_disk_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_instances_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_DetachDisk_sync", + "regionTag": "compute_v1_generated_Instances_Get_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -21482,22 +23574,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_detach_disk_sync.py" + "title": "compute_v1_generated_instances_get_sync.py" }, { "canonical": true, @@ -21506,19 +23598,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.get_effective_firewalls", + "fullName": "google.cloud.compute_v1.InstancesClient.insert", "method": { - "fullName": "google.cloud.compute.v1.Instances.GetEffectiveFirewalls", + "fullName": "google.cloud.compute.v1.Instances.Insert", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "GetEffectiveFirewalls" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetEffectiveFirewallsInstanceRequest" + "type": "google.cloud.compute_v1.types.InsertInstanceRequest" }, { "name": "project", @@ -21529,12 +23621,8 @@ "type": "str" }, { - "name": "instance", - "type": "str" - }, - { - "name": "network_interface", - "type": "str" + "name": "instance_resource", + "type": "google.cloud.compute_v1.types.Instance" }, { "name": "retry", @@ -21549,22 +23637,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstancesGetEffectiveFirewallsResponse", - "shortName": "get_effective_firewalls" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for GetEffectiveFirewalls", - "file": "compute_v1_generated_instances_get_effective_firewalls_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instances_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_GetEffectiveFirewalls_sync", + "regionTag": "compute_v1_generated_Instances_Insert_sync", "segments": [ { - "end": 54, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 52, "start": 27, "type": "SHORT" }, @@ -21574,22 +23662,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_get_effective_firewalls_sync.py" + "title": "compute_v1_generated_instances_insert_sync.py" }, { "canonical": true, @@ -21598,19 +23686,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.get_guest_attributes", + "fullName": "google.cloud.compute_v1.InstancesClient.list_referrers", "method": { - "fullName": "google.cloud.compute.v1.Instances.GetGuestAttributes", + "fullName": "google.cloud.compute.v1.Instances.ListReferrers", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "GetGuestAttributes" + "shortName": "ListReferrers" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetGuestAttributesInstanceRequest" + "type": "google.cloud.compute_v1.types.ListReferrersInstancesRequest" }, { "name": "project", @@ -21637,22 +23725,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.GuestAttributes", - "shortName": "get_guest_attributes" + "resultType": "google.cloud.compute_v1.services.instances.pagers.ListReferrersPager", + "shortName": "list_referrers" }, - "description": "Sample for GetGuestAttributes", - "file": "compute_v1_generated_instances_get_guest_attributes_sync.py", + "description": "Sample for ListReferrers", + "file": "compute_v1_generated_instances_list_referrers_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_GetGuestAttributes_sync", + "regionTag": "compute_v1_generated_Instances_ListReferrers_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -21672,12 +23760,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 55, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_get_guest_attributes_sync.py" + "title": "compute_v1_generated_instances_list_referrers_sync.py" }, { "canonical": true, @@ -21686,19 +23774,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.InstancesClient.list", "method": { - "fullName": "google.cloud.compute.v1.Instances.GetIamPolicy", + "fullName": "google.cloud.compute.v1.Instances.List", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "GetIamPolicy" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyInstanceRequest" + "type": "google.cloud.compute_v1.types.ListInstancesRequest" }, { "name": "project", @@ -21708,10 +23796,6 @@ "name": "zone", "type": "str" }, - { - "name": "resource", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -21725,14 +23809,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.cloud.compute_v1.services.instances.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_instances_get_iam_policy_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_instances_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_Instances_List_sync", "segments": [ { "end": 53, @@ -21750,22 +23834,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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_get_iam_policy_sync.py" + "title": "compute_v1_generated_instances_list_sync.py" }, { "canonical": true, @@ -21774,19 +23858,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.get_screenshot", + "fullName": "google.cloud.compute_v1.InstancesClient.perform_maintenance", "method": { - "fullName": "google.cloud.compute.v1.Instances.GetScreenshot", + "fullName": "google.cloud.compute.v1.Instances.PerformMaintenance", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "GetScreenshot" + "shortName": "PerformMaintenance" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetScreenshotInstanceRequest" + "type": "google.cloud.compute_v1.types.PerformMaintenanceInstanceRequest" }, { "name": "project", @@ -21813,14 +23897,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Screenshot", - "shortName": "get_screenshot" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "perform_maintenance" }, - "description": "Sample for GetScreenshot", - "file": "compute_v1_generated_instances_get_screenshot_sync.py", + "description": "Sample for PerformMaintenance", + "file": "compute_v1_generated_instances_perform_maintenance_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_GetScreenshot_sync", + "regionTag": "compute_v1_generated_Instances_PerformMaintenance_sync", "segments": [ { "end": 53, @@ -21853,7 +23937,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_get_screenshot_sync.py" + "title": "compute_v1_generated_instances_perform_maintenance_sync.py" }, { "canonical": true, @@ -21862,19 +23946,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.get_serial_port_output", + "fullName": "google.cloud.compute_v1.InstancesClient.remove_resource_policies", "method": { - "fullName": "google.cloud.compute.v1.Instances.GetSerialPortOutput", + "fullName": "google.cloud.compute.v1.Instances.RemoveResourcePolicies", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "GetSerialPortOutput" + "shortName": "RemoveResourcePolicies" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetSerialPortOutputInstanceRequest" + "type": "google.cloud.compute_v1.types.RemoveResourcePoliciesInstanceRequest" }, { "name": "project", @@ -21889,92 +23973,8 @@ "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_v1.types.SerialPortOutput", - "shortName": "get_serial_port_output" - }, - "description": "Sample for GetSerialPortOutput", - "file": "compute_v1_generated_instances_get_serial_port_output_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_GetSerialPortOutput_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_v1_generated_instances_get_serial_port_output_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" - }, - "fullName": "google.cloud.compute_v1.InstancesClient.get_shielded_instance_identity", - "method": { - "fullName": "google.cloud.compute.v1.Instances.GetShieldedInstanceIdentity", - "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" - }, - "shortName": "GetShieldedInstanceIdentity" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.GetShieldedInstanceIdentityInstanceRequest" - }, - { - "name": "project", - "type": "str" - }, - { - "name": "zone", - "type": "str" - }, - { - "name": "instance", - "type": "str" + "name": "instances_remove_resource_policies_request_resource", + "type": "google.cloud.compute_v1.types.InstancesRemoveResourcePoliciesRequest" }, { "name": "retry", @@ -21989,14 +23989,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.ShieldedInstanceIdentity", - "shortName": "get_shielded_instance_identity" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "remove_resource_policies" }, - "description": "Sample for GetShieldedInstanceIdentity", - "file": "compute_v1_generated_instances_get_shielded_instance_identity_sync.py", + "description": "Sample for RemoveResourcePolicies", + "file": "compute_v1_generated_instances_remove_resource_policies_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_GetShieldedInstanceIdentity_sync", + "regionTag": "compute_v1_generated_Instances_RemoveResourcePolicies_sync", "segments": [ { "end": 53, @@ -22029,7 +24029,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_get_shielded_instance_identity_sync.py" + "title": "compute_v1_generated_instances_remove_resource_policies_sync.py" }, { "canonical": true, @@ -22038,19 +24038,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.get", + "fullName": "google.cloud.compute_v1.InstancesClient.report_host_as_faulty", "method": { - "fullName": "google.cloud.compute.v1.Instances.Get", + "fullName": "google.cloud.compute.v1.Instances.ReportHostAsFaulty", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Get" + "shortName": "ReportHostAsFaulty" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstanceRequest" + "type": "google.cloud.compute_v1.types.ReportHostAsFaultyInstanceRequest" }, { "name": "project", @@ -22064,6 +24064,10 @@ "name": "instance", "type": "str" }, + { + "name": "instances_report_host_as_faulty_request_resource", + "type": "google.cloud.compute_v1.types.InstancesReportHostAsFaultyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22077,14 +24081,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Instance", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "report_host_as_faulty" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instances_get_sync.py", + "description": "Sample for ReportHostAsFaulty", + "file": "compute_v1_generated_instances_report_host_as_faulty_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Get_sync", + "regionTag": "compute_v1_generated_Instances_ReportHostAsFaulty_sync", "segments": [ { "end": 53, @@ -22117,95 +24121,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_get_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" - }, - "fullName": "google.cloud.compute_v1.InstancesClient.insert", - "method": { - "fullName": "google.cloud.compute.v1.Instances.Insert", - "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" - }, - "shortName": "Insert" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstanceRequest" - }, - { - "name": "project", - "type": "str" - }, - { - "name": "zone", - "type": "str" - }, - { - "name": "instance_resource", - "type": "google.cloud.compute_v1.types.Instance" - }, - { - "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": "insert" - }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instances_insert_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Insert_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_v1_generated_instances_insert_sync.py" + "title": "compute_v1_generated_instances_report_host_as_faulty_sync.py" }, { "canonical": true, @@ -22214,19 +24130,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.list_referrers", + "fullName": "google.cloud.compute_v1.InstancesClient.reset", "method": { - "fullName": "google.cloud.compute.v1.Instances.ListReferrers", + "fullName": "google.cloud.compute.v1.Instances.Reset", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "ListReferrers" + "shortName": "Reset" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListReferrersInstancesRequest" + "type": "google.cloud.compute_v1.types.ResetInstanceRequest" }, { "name": "project", @@ -22253,22 +24169,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instances.pagers.ListReferrersPager", - "shortName": "list_referrers" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "reset" }, - "description": "Sample for ListReferrers", - "file": "compute_v1_generated_instances_list_referrers_sync.py", + "description": "Sample for Reset", + "file": "compute_v1_generated_instances_reset_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_ListReferrers_sync", + "regionTag": "compute_v1_generated_Instances_Reset_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -22288,12 +24204,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 55, + "end": 54, "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_list_referrers_sync.py" + "title": "compute_v1_generated_instances_reset_sync.py" }, { "canonical": true, @@ -22302,19 +24218,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.list", + "fullName": "google.cloud.compute_v1.InstancesClient.resume", "method": { - "fullName": "google.cloud.compute.v1.Instances.List", + "fullName": "google.cloud.compute.v1.Instances.Resume", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "List" + "shortName": "Resume" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstancesRequest" + "type": "google.cloud.compute_v1.types.ResumeInstanceRequest" }, { "name": "project", @@ -22324,6 +24240,10 @@ "name": "zone", "type": "str" }, + { + "name": "instance", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22337,14 +24257,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instances.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "resume" }, - "description": "Sample for List", - "file": "compute_v1_generated_instances_list_sync.py", + "description": "Sample for Resume", + "file": "compute_v1_generated_instances_resume_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_List_sync", + "regionTag": "compute_v1_generated_Instances_Resume_sync", "segments": [ { "end": 53, @@ -22362,22 +24282,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { "end": 54, - "start": 50, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_list_sync.py" + "title": "compute_v1_generated_instances_resume_sync.py" }, { "canonical": true, @@ -22386,19 +24306,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.perform_maintenance", + "fullName": "google.cloud.compute_v1.InstancesClient.send_diagnostic_interrupt", "method": { - "fullName": "google.cloud.compute.v1.Instances.PerformMaintenance", + "fullName": "google.cloud.compute.v1.Instances.SendDiagnosticInterrupt", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "PerformMaintenance" + "shortName": "SendDiagnosticInterrupt" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PerformMaintenanceInstanceRequest" + "type": "google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceRequest" }, { "name": "project", @@ -22425,14 +24345,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "perform_maintenance" + "resultType": "google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceResponse", + "shortName": "send_diagnostic_interrupt" }, - "description": "Sample for PerformMaintenance", - "file": "compute_v1_generated_instances_perform_maintenance_sync.py", + "description": "Sample for SendDiagnosticInterrupt", + "file": "compute_v1_generated_instances_send_diagnostic_interrupt_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_PerformMaintenance_sync", + "regionTag": "compute_v1_generated_Instances_SendDiagnosticInterrupt_sync", "segments": [ { "end": 53, @@ -22465,7 +24385,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_perform_maintenance_sync.py" + "title": "compute_v1_generated_instances_send_diagnostic_interrupt_sync.py" }, { "canonical": true, @@ -22474,19 +24394,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.remove_resource_policies", + "fullName": "google.cloud.compute_v1.InstancesClient.set_deletion_protection", "method": { - "fullName": "google.cloud.compute.v1.Instances.RemoveResourcePolicies", + "fullName": "google.cloud.compute.v1.Instances.SetDeletionProtection", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "RemoveResourcePolicies" + "shortName": "SetDeletionProtection" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.RemoveResourcePoliciesInstanceRequest" + "type": "google.cloud.compute_v1.types.SetDeletionProtectionInstanceRequest" }, { "name": "project", @@ -22497,13 +24417,9 @@ "type": "str" }, { - "name": "instance", + "name": "resource", "type": "str" }, - { - "name": "instances_remove_resource_policies_request_resource", - "type": "google.cloud.compute_v1.types.InstancesRemoveResourcePoliciesRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22518,13 +24434,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "remove_resource_policies" + "shortName": "set_deletion_protection" }, - "description": "Sample for RemoveResourcePolicies", - "file": "compute_v1_generated_instances_remove_resource_policies_sync.py", + "description": "Sample for SetDeletionProtection", + "file": "compute_v1_generated_instances_set_deletion_protection_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_RemoveResourcePolicies_sync", + "regionTag": "compute_v1_generated_Instances_SetDeletionProtection_sync", "segments": [ { "end": 53, @@ -22557,7 +24473,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_remove_resource_policies_sync.py" + "title": "compute_v1_generated_instances_set_deletion_protection_sync.py" }, { "canonical": true, @@ -22566,19 +24482,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.report_host_as_faulty", + "fullName": "google.cloud.compute_v1.InstancesClient.set_disk_auto_delete", "method": { - "fullName": "google.cloud.compute.v1.Instances.ReportHostAsFaulty", + "fullName": "google.cloud.compute.v1.Instances.SetDiskAutoDelete", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "ReportHostAsFaulty" + "shortName": "SetDiskAutoDelete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ReportHostAsFaultyInstanceRequest" + "type": "google.cloud.compute_v1.types.SetDiskAutoDeleteInstanceRequest" }, { "name": "project", @@ -22593,8 +24509,12 @@ "type": "str" }, { - "name": "instances_report_host_as_faulty_request_resource", - "type": "google.cloud.compute_v1.types.InstancesReportHostAsFaultyRequest" + "name": "auto_delete", + "type": "bool" + }, + { + "name": "device_name", + "type": "str" }, { "name": "retry", @@ -22610,21 +24530,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "report_host_as_faulty" + "shortName": "set_disk_auto_delete" }, - "description": "Sample for ReportHostAsFaulty", - "file": "compute_v1_generated_instances_report_host_as_faulty_sync.py", + "description": "Sample for SetDiskAutoDelete", + "file": "compute_v1_generated_instances_set_disk_auto_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_ReportHostAsFaulty_sync", + "regionTag": "compute_v1_generated_Instances_SetDiskAutoDelete_sync", "segments": [ { - "end": 53, + "end": 55, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 55, "start": 27, "type": "SHORT" }, @@ -22634,22 +24554,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 49, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 52, + "start": 50, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 56, + "start": 53, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_report_host_as_faulty_sync.py" + "title": "compute_v1_generated_instances_set_disk_auto_delete_sync.py" }, { "canonical": true, @@ -22658,19 +24578,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.reset", + "fullName": "google.cloud.compute_v1.InstancesClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Instances.Reset", + "fullName": "google.cloud.compute.v1.Instances.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Reset" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ResetInstanceRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyInstanceRequest" }, { "name": "project", @@ -22681,9 +24601,13 @@ "type": "str" }, { - "name": "instance", + "name": "resource", "type": "str" }, + { + "name": "zone_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.ZoneSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22697,14 +24621,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "reset" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "set_iam_policy" }, - "description": "Sample for Reset", - "file": "compute_v1_generated_instances_reset_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_instances_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Reset_sync", + "regionTag": "compute_v1_generated_Instances_SetIamPolicy_sync", "segments": [ { "end": 53, @@ -22737,7 +24661,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_reset_sync.py" + "title": "compute_v1_generated_instances_set_iam_policy_sync.py" }, { "canonical": true, @@ -22746,19 +24670,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.resume", + "fullName": "google.cloud.compute_v1.InstancesClient.set_labels", "method": { - "fullName": "google.cloud.compute.v1.Instances.Resume", + "fullName": "google.cloud.compute.v1.Instances.SetLabels", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Resume" + "shortName": "SetLabels" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ResumeInstanceRequest" + "type": "google.cloud.compute_v1.types.SetLabelsInstanceRequest" }, { "name": "project", @@ -22772,6 +24696,10 @@ "name": "instance", "type": "str" }, + { + "name": "instances_set_labels_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetLabelsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22786,13 +24714,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "resume" + "shortName": "set_labels" }, - "description": "Sample for Resume", - "file": "compute_v1_generated_instances_resume_sync.py", + "description": "Sample for SetLabels", + "file": "compute_v1_generated_instances_set_labels_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Resume_sync", + "regionTag": "compute_v1_generated_Instances_SetLabels_sync", "segments": [ { "end": 53, @@ -22825,7 +24753,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_resume_sync.py" + "title": "compute_v1_generated_instances_set_labels_sync.py" }, { "canonical": true, @@ -22834,19 +24762,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.send_diagnostic_interrupt", + "fullName": "google.cloud.compute_v1.InstancesClient.set_machine_resources", "method": { - "fullName": "google.cloud.compute.v1.Instances.SendDiagnosticInterrupt", + "fullName": "google.cloud.compute.v1.Instances.SetMachineResources", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SendDiagnosticInterrupt" + "shortName": "SetMachineResources" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceRequest" + "type": "google.cloud.compute_v1.types.SetMachineResourcesInstanceRequest" }, { "name": "project", @@ -22860,6 +24788,10 @@ "name": "instance", "type": "str" }, + { + "name": "instances_set_machine_resources_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22873,14 +24805,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.SendDiagnosticInterruptInstanceResponse", - "shortName": "send_diagnostic_interrupt" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_machine_resources" }, - "description": "Sample for SendDiagnosticInterrupt", - "file": "compute_v1_generated_instances_send_diagnostic_interrupt_sync.py", + "description": "Sample for SetMachineResources", + "file": "compute_v1_generated_instances_set_machine_resources_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SendDiagnosticInterrupt_sync", + "regionTag": "compute_v1_generated_Instances_SetMachineResources_sync", "segments": [ { "end": 53, @@ -22913,7 +24845,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_send_diagnostic_interrupt_sync.py" + "title": "compute_v1_generated_instances_set_machine_resources_sync.py" }, { "canonical": true, @@ -22922,19 +24854,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_deletion_protection", + "fullName": "google.cloud.compute_v1.InstancesClient.set_machine_type", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetDeletionProtection", + "fullName": "google.cloud.compute.v1.Instances.SetMachineType", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetDeletionProtection" + "shortName": "SetMachineType" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetDeletionProtectionInstanceRequest" + "type": "google.cloud.compute_v1.types.SetMachineTypeInstanceRequest" }, { "name": "project", @@ -22945,9 +24877,13 @@ "type": "str" }, { - "name": "resource", + "name": "instance", "type": "str" }, + { + "name": "instances_set_machine_type_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetMachineTypeRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -22962,13 +24898,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_deletion_protection" + "shortName": "set_machine_type" }, - "description": "Sample for SetDeletionProtection", - "file": "compute_v1_generated_instances_set_deletion_protection_sync.py", + "description": "Sample for SetMachineType", + "file": "compute_v1_generated_instances_set_machine_type_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetDeletionProtection_sync", + "regionTag": "compute_v1_generated_Instances_SetMachineType_sync", "segments": [ { "end": 53, @@ -23001,7 +24937,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_deletion_protection_sync.py" + "title": "compute_v1_generated_instances_set_machine_type_sync.py" }, { "canonical": true, @@ -23010,19 +24946,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_disk_auto_delete", + "fullName": "google.cloud.compute_v1.InstancesClient.set_metadata", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetDiskAutoDelete", + "fullName": "google.cloud.compute.v1.Instances.SetMetadata", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetDiskAutoDelete" + "shortName": "SetMetadata" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetDiskAutoDeleteInstanceRequest" + "type": "google.cloud.compute_v1.types.SetMetadataInstanceRequest" }, { "name": "project", @@ -23037,13 +24973,101 @@ "type": "str" }, { - "name": "auto_delete", - "type": "bool" + "name": "metadata_resource", + "type": "google.cloud.compute_v1.types.Metadata" }, { - "name": "device_name", + "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_metadata" + }, + "description": "Sample for SetMetadata", + "file": "compute_v1_generated_instances_set_metadata_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Instances_SetMetadata_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_v1_generated_instances_set_metadata_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" + }, + "fullName": "google.cloud.compute_v1.InstancesClient.set_min_cpu_platform", + "method": { + "fullName": "google.cloud.compute.v1.Instances.SetMinCpuPlatform", + "service": { + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" + }, + "shortName": "SetMinCpuPlatform" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.SetMinCpuPlatformInstanceRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", "type": "str" }, + { + "name": "instance", + "type": "str" + }, + { + "name": "instances_set_min_cpu_platform_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -23058,21 +25082,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_disk_auto_delete" + "shortName": "set_min_cpu_platform" }, - "description": "Sample for SetDiskAutoDelete", - "file": "compute_v1_generated_instances_set_disk_auto_delete_sync.py", + "description": "Sample for SetMinCpuPlatform", + "file": "compute_v1_generated_instances_set_min_cpu_platform_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetDiskAutoDelete_sync", + "regionTag": "compute_v1_generated_Instances_SetMinCpuPlatform_sync", "segments": [ { - "end": 55, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 55, + "end": 53, "start": 27, "type": "SHORT" }, @@ -23082,22 +25106,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 49, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 52, - "start": 50, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 56, - "start": 53, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_disk_auto_delete_sync.py" + "title": "compute_v1_generated_instances_set_min_cpu_platform_sync.py" }, { "canonical": true, @@ -23106,19 +25130,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.InstancesClient.set_name", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetIamPolicy", + "fullName": "google.cloud.compute.v1.Instances.SetName", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetIamPolicy" + "shortName": "SetName" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyInstanceRequest" + "type": "google.cloud.compute_v1.types.SetNameInstanceRequest" }, { "name": "project", @@ -23129,12 +25153,12 @@ "type": "str" }, { - "name": "resource", + "name": "instance", "type": "str" }, { - "name": "zone_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.ZoneSetPolicyRequest" + "name": "instances_set_name_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetNameRequest" }, { "name": "retry", @@ -23149,14 +25173,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_name" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_instances_set_iam_policy_sync.py", + "description": "Sample for SetName", + "file": "compute_v1_generated_instances_set_name_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_Instances_SetName_sync", "segments": [ { "end": 53, @@ -23189,7 +25213,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_iam_policy_sync.py" + "title": "compute_v1_generated_instances_set_name_sync.py" }, { "canonical": true, @@ -23198,19 +25222,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_labels", + "fullName": "google.cloud.compute_v1.InstancesClient.set_scheduling", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetLabels", + "fullName": "google.cloud.compute.v1.Instances.SetScheduling", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetLabels" + "shortName": "SetScheduling" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsInstanceRequest" + "type": "google.cloud.compute_v1.types.SetSchedulingInstanceRequest" }, { "name": "project", @@ -23225,8 +25249,8 @@ "type": "str" }, { - "name": "instances_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetLabelsRequest" + "name": "scheduling_resource", + "type": "google.cloud.compute_v1.types.Scheduling" }, { "name": "retry", @@ -23242,13 +25266,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "shortName": "set_scheduling" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_instances_set_labels_sync.py", + "description": "Sample for SetScheduling", + "file": "compute_v1_generated_instances_set_scheduling_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetLabels_sync", + "regionTag": "compute_v1_generated_Instances_SetScheduling_sync", "segments": [ { "end": 53, @@ -23281,7 +25305,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_labels_sync.py" + "title": "compute_v1_generated_instances_set_scheduling_sync.py" }, { "canonical": true, @@ -23290,19 +25314,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_machine_resources", + "fullName": "google.cloud.compute_v1.InstancesClient.set_security_policy", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetMachineResources", + "fullName": "google.cloud.compute.v1.Instances.SetSecurityPolicy", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetMachineResources" + "shortName": "SetSecurityPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetMachineResourcesInstanceRequest" + "type": "google.cloud.compute_v1.types.SetSecurityPolicyInstanceRequest" }, { "name": "project", @@ -23317,8 +25341,8 @@ "type": "str" }, { - "name": "instances_set_machine_resources_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetMachineResourcesRequest" + "name": "instances_set_security_policy_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetSecurityPolicyRequest" }, { "name": "retry", @@ -23334,13 +25358,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_machine_resources" + "shortName": "set_security_policy" }, - "description": "Sample for SetMachineResources", - "file": "compute_v1_generated_instances_set_machine_resources_sync.py", + "description": "Sample for SetSecurityPolicy", + "file": "compute_v1_generated_instances_set_security_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetMachineResources_sync", + "regionTag": "compute_v1_generated_Instances_SetSecurityPolicy_sync", "segments": [ { "end": 53, @@ -23373,7 +25397,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_machine_resources_sync.py" + "title": "compute_v1_generated_instances_set_security_policy_sync.py" }, { "canonical": true, @@ -23382,19 +25406,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_machine_type", + "fullName": "google.cloud.compute_v1.InstancesClient.set_service_account", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetMachineType", + "fullName": "google.cloud.compute.v1.Instances.SetServiceAccount", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetMachineType" + "shortName": "SetServiceAccount" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetMachineTypeInstanceRequest" + "type": "google.cloud.compute_v1.types.SetServiceAccountInstanceRequest" }, { "name": "project", @@ -23409,8 +25433,8 @@ "type": "str" }, { - "name": "instances_set_machine_type_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetMachineTypeRequest" + "name": "instances_set_service_account_request_resource", + "type": "google.cloud.compute_v1.types.InstancesSetServiceAccountRequest" }, { "name": "retry", @@ -23426,13 +25450,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_machine_type" + "shortName": "set_service_account" }, - "description": "Sample for SetMachineType", - "file": "compute_v1_generated_instances_set_machine_type_sync.py", + "description": "Sample for SetServiceAccount", + "file": "compute_v1_generated_instances_set_service_account_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetMachineType_sync", + "regionTag": "compute_v1_generated_Instances_SetServiceAccount_sync", "segments": [ { "end": 53, @@ -23465,7 +25489,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_machine_type_sync.py" + "title": "compute_v1_generated_instances_set_service_account_sync.py" }, { "canonical": true, @@ -23474,19 +25498,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_metadata", + "fullName": "google.cloud.compute_v1.InstancesClient.set_shielded_instance_integrity_policy", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetMetadata", + "fullName": "google.cloud.compute.v1.Instances.SetShieldedInstanceIntegrityPolicy", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetMetadata" + "shortName": "SetShieldedInstanceIntegrityPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetMetadataInstanceRequest" + "type": "google.cloud.compute_v1.types.SetShieldedInstanceIntegrityPolicyInstanceRequest" }, { "name": "project", @@ -23501,8 +25525,8 @@ "type": "str" }, { - "name": "metadata_resource", - "type": "google.cloud.compute_v1.types.Metadata" + "name": "shielded_instance_integrity_policy_resource", + "type": "google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy" }, { "name": "retry", @@ -23518,13 +25542,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_metadata" + "shortName": "set_shielded_instance_integrity_policy" }, - "description": "Sample for SetMetadata", - "file": "compute_v1_generated_instances_set_metadata_sync.py", + "description": "Sample for SetShieldedInstanceIntegrityPolicy", + "file": "compute_v1_generated_instances_set_shielded_instance_integrity_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetMetadata_sync", + "regionTag": "compute_v1_generated_Instances_SetShieldedInstanceIntegrityPolicy_sync", "segments": [ { "end": 53, @@ -23557,7 +25581,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_metadata_sync.py" + "title": "compute_v1_generated_instances_set_shielded_instance_integrity_policy_sync.py" }, { "canonical": true, @@ -23566,19 +25590,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_min_cpu_platform", + "fullName": "google.cloud.compute_v1.InstancesClient.set_tags", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetMinCpuPlatform", + "fullName": "google.cloud.compute.v1.Instances.SetTags", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetMinCpuPlatform" + "shortName": "SetTags" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetMinCpuPlatformInstanceRequest" + "type": "google.cloud.compute_v1.types.SetTagsInstanceRequest" }, { "name": "project", @@ -23593,8 +25617,8 @@ "type": "str" }, { - "name": "instances_set_min_cpu_platform_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetMinCpuPlatformRequest" + "name": "tags_resource", + "type": "google.cloud.compute_v1.types.Tags" }, { "name": "retry", @@ -23610,13 +25634,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_min_cpu_platform" + "shortName": "set_tags" }, - "description": "Sample for SetMinCpuPlatform", - "file": "compute_v1_generated_instances_set_min_cpu_platform_sync.py", + "description": "Sample for SetTags", + "file": "compute_v1_generated_instances_set_tags_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetMinCpuPlatform_sync", + "regionTag": "compute_v1_generated_Instances_SetTags_sync", "segments": [ { "end": 53, @@ -23649,7 +25673,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_min_cpu_platform_sync.py" + "title": "compute_v1_generated_instances_set_tags_sync.py" }, { "canonical": true, @@ -23658,19 +25682,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_name", + "fullName": "google.cloud.compute_v1.InstancesClient.simulate_maintenance_event", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetName", + "fullName": "google.cloud.compute.v1.Instances.SimulateMaintenanceEvent", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetName" + "shortName": "SimulateMaintenanceEvent" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetNameInstanceRequest" + "type": "google.cloud.compute_v1.types.SimulateMaintenanceEventInstanceRequest" }, { "name": "project", @@ -23684,10 +25708,6 @@ "name": "instance", "type": "str" }, - { - "name": "instances_set_name_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetNameRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -23702,13 +25722,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_name" + "shortName": "simulate_maintenance_event" }, - "description": "Sample for SetName", - "file": "compute_v1_generated_instances_set_name_sync.py", + "description": "Sample for SimulateMaintenanceEvent", + "file": "compute_v1_generated_instances_simulate_maintenance_event_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetName_sync", + "regionTag": "compute_v1_generated_Instances_SimulateMaintenanceEvent_sync", "segments": [ { "end": 53, @@ -23741,7 +25761,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_name_sync.py" + "title": "compute_v1_generated_instances_simulate_maintenance_event_sync.py" }, { "canonical": true, @@ -23750,19 +25770,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_scheduling", + "fullName": "google.cloud.compute_v1.InstancesClient.start_with_encryption_key", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetScheduling", + "fullName": "google.cloud.compute.v1.Instances.StartWithEncryptionKey", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetScheduling" + "shortName": "StartWithEncryptionKey" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetSchedulingInstanceRequest" + "type": "google.cloud.compute_v1.types.StartWithEncryptionKeyInstanceRequest" }, { "name": "project", @@ -23777,8 +25797,8 @@ "type": "str" }, { - "name": "scheduling_resource", - "type": "google.cloud.compute_v1.types.Scheduling" + "name": "instances_start_with_encryption_key_request_resource", + "type": "google.cloud.compute_v1.types.InstancesStartWithEncryptionKeyRequest" }, { "name": "retry", @@ -23794,13 +25814,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_scheduling" + "shortName": "start_with_encryption_key" }, - "description": "Sample for SetScheduling", - "file": "compute_v1_generated_instances_set_scheduling_sync.py", + "description": "Sample for StartWithEncryptionKey", + "file": "compute_v1_generated_instances_start_with_encryption_key_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetScheduling_sync", + "regionTag": "compute_v1_generated_Instances_StartWithEncryptionKey_sync", "segments": [ { "end": 53, @@ -23833,7 +25853,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_scheduling_sync.py" + "title": "compute_v1_generated_instances_start_with_encryption_key_sync.py" }, { "canonical": true, @@ -23842,19 +25862,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_security_policy", + "fullName": "google.cloud.compute_v1.InstancesClient.start", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetSecurityPolicy", + "fullName": "google.cloud.compute.v1.Instances.Start", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetSecurityPolicy" + "shortName": "Start" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetSecurityPolicyInstanceRequest" + "type": "google.cloud.compute_v1.types.StartInstanceRequest" }, { "name": "project", @@ -23868,10 +25888,6 @@ "name": "instance", "type": "str" }, - { - "name": "instances_set_security_policy_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetSecurityPolicyRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -23886,13 +25902,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_security_policy" + "shortName": "start" }, - "description": "Sample for SetSecurityPolicy", - "file": "compute_v1_generated_instances_set_security_policy_sync.py", + "description": "Sample for Start", + "file": "compute_v1_generated_instances_start_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetSecurityPolicy_sync", + "regionTag": "compute_v1_generated_Instances_Start_sync", "segments": [ { "end": 53, @@ -23925,7 +25941,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_security_policy_sync.py" + "title": "compute_v1_generated_instances_start_sync.py" }, { "canonical": true, @@ -23934,19 +25950,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_service_account", + "fullName": "google.cloud.compute_v1.InstancesClient.stop", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetServiceAccount", + "fullName": "google.cloud.compute.v1.Instances.Stop", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetServiceAccount" + "shortName": "Stop" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetServiceAccountInstanceRequest" + "type": "google.cloud.compute_v1.types.StopInstanceRequest" }, { "name": "project", @@ -23961,8 +25977,92 @@ "type": "str" }, { - "name": "instances_set_service_account_request_resource", - "type": "google.cloud.compute_v1.types.InstancesSetServiceAccountRequest" + "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": "stop" + }, + "description": "Sample for Stop", + "file": "compute_v1_generated_instances_stop_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_Instances_Stop_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_v1_generated_instances_stop_sync.py" + }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.InstancesClient", + "shortName": "InstancesClient" + }, + "fullName": "google.cloud.compute_v1.InstancesClient.suspend", + "method": { + "fullName": "google.cloud.compute.v1.Instances.Suspend", + "service": { + "fullName": "google.cloud.compute.v1.Instances", + "shortName": "Instances" + }, + "shortName": "Suspend" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.SuspendInstanceRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "zone", + "type": "str" + }, + { + "name": "instance", + "type": "str" }, { "name": "retry", @@ -23978,13 +26078,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_service_account" + "shortName": "suspend" }, - "description": "Sample for SetServiceAccount", - "file": "compute_v1_generated_instances_set_service_account_sync.py", + "description": "Sample for Suspend", + "file": "compute_v1_generated_instances_suspend_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetServiceAccount_sync", + "regionTag": "compute_v1_generated_Instances_Suspend_sync", "segments": [ { "end": 53, @@ -24017,7 +26117,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_service_account_sync.py" + "title": "compute_v1_generated_instances_suspend_sync.py" }, { "canonical": true, @@ -24026,19 +26126,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_shielded_instance_integrity_policy", + "fullName": "google.cloud.compute_v1.InstancesClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetShieldedInstanceIntegrityPolicy", + "fullName": "google.cloud.compute.v1.Instances.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetShieldedInstanceIntegrityPolicy" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetShieldedInstanceIntegrityPolicyInstanceRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInstanceRequest" }, { "name": "project", @@ -24049,12 +26149,12 @@ "type": "str" }, { - "name": "instance", + "name": "resource", "type": "str" }, { - "name": "shielded_instance_integrity_policy_resource", - "type": "google.cloud.compute_v1.types.ShieldedInstanceIntegrityPolicy" + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" }, { "name": "retry", @@ -24069,14 +26169,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_shielded_instance_integrity_policy" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for SetShieldedInstanceIntegrityPolicy", - "file": "compute_v1_generated_instances_set_shielded_instance_integrity_policy_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_instances_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetShieldedInstanceIntegrityPolicy_sync", + "regionTag": "compute_v1_generated_Instances_TestIamPermissions_sync", "segments": [ { "end": 53, @@ -24109,7 +26209,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_set_shielded_instance_integrity_policy_sync.py" + "title": "compute_v1_generated_instances_test_iam_permissions_sync.py" }, { "canonical": true, @@ -24118,19 +26218,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.set_tags", + "fullName": "google.cloud.compute_v1.InstancesClient.update_access_config", "method": { - "fullName": "google.cloud.compute.v1.Instances.SetTags", + "fullName": "google.cloud.compute.v1.Instances.UpdateAccessConfig", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "SetTags" + "shortName": "UpdateAccessConfig" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetTagsInstanceRequest" + "type": "google.cloud.compute_v1.types.UpdateAccessConfigInstanceRequest" }, { "name": "project", @@ -24145,96 +26245,12 @@ "type": "str" }, { - "name": "tags_resource", - "type": "google.cloud.compute_v1.types.Tags" - }, - { - "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_tags" - }, - "description": "Sample for SetTags", - "file": "compute_v1_generated_instances_set_tags_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SetTags_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_v1_generated_instances_set_tags_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" - }, - "fullName": "google.cloud.compute_v1.InstancesClient.simulate_maintenance_event", - "method": { - "fullName": "google.cloud.compute.v1.Instances.SimulateMaintenanceEvent", - "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" - }, - "shortName": "SimulateMaintenanceEvent" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.SimulateMaintenanceEventInstanceRequest" - }, - { - "name": "project", - "type": "str" - }, - { - "name": "zone", + "name": "network_interface", "type": "str" }, { - "name": "instance", - "type": "str" + "name": "access_config_resource", + "type": "google.cloud.compute_v1.types.AccessConfig" }, { "name": "retry", @@ -24250,21 +26266,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "simulate_maintenance_event" + "shortName": "update_access_config" }, - "description": "Sample for SimulateMaintenanceEvent", - "file": "compute_v1_generated_instances_simulate_maintenance_event_sync.py", + "description": "Sample for UpdateAccessConfig", + "file": "compute_v1_generated_instances_update_access_config_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_SimulateMaintenanceEvent_sync", + "regionTag": "compute_v1_generated_Instances_UpdateAccessConfig_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -24274,22 +26290,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_simulate_maintenance_event_sync.py" + "title": "compute_v1_generated_instances_update_access_config_sync.py" }, { "canonical": true, @@ -24298,19 +26314,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.start_with_encryption_key", + "fullName": "google.cloud.compute_v1.InstancesClient.update_display_device", "method": { - "fullName": "google.cloud.compute.v1.Instances.StartWithEncryptionKey", + "fullName": "google.cloud.compute.v1.Instances.UpdateDisplayDevice", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "StartWithEncryptionKey" + "shortName": "UpdateDisplayDevice" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.StartWithEncryptionKeyInstanceRequest" + "type": "google.cloud.compute_v1.types.UpdateDisplayDeviceInstanceRequest" }, { "name": "project", @@ -24325,8 +26341,8 @@ "type": "str" }, { - "name": "instances_start_with_encryption_key_request_resource", - "type": "google.cloud.compute_v1.types.InstancesStartWithEncryptionKeyRequest" + "name": "display_device_resource", + "type": "google.cloud.compute_v1.types.DisplayDevice" }, { "name": "retry", @@ -24342,13 +26358,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "start_with_encryption_key" + "shortName": "update_display_device" }, - "description": "Sample for StartWithEncryptionKey", - "file": "compute_v1_generated_instances_start_with_encryption_key_sync.py", + "description": "Sample for UpdateDisplayDevice", + "file": "compute_v1_generated_instances_update_display_device_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_StartWithEncryptionKey_sync", + "regionTag": "compute_v1_generated_Instances_UpdateDisplayDevice_sync", "segments": [ { "end": 53, @@ -24381,7 +26397,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_start_with_encryption_key_sync.py" + "title": "compute_v1_generated_instances_update_display_device_sync.py" }, { "canonical": true, @@ -24390,19 +26406,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.start", + "fullName": "google.cloud.compute_v1.InstancesClient.update_network_interface", "method": { - "fullName": "google.cloud.compute.v1.Instances.Start", + "fullName": "google.cloud.compute.v1.Instances.UpdateNetworkInterface", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Start" + "shortName": "UpdateNetworkInterface" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.StartInstanceRequest" + "type": "google.cloud.compute_v1.types.UpdateNetworkInterfaceInstanceRequest" }, { "name": "project", @@ -24416,6 +26432,14 @@ "name": "instance", "type": "str" }, + { + "name": "network_interface", + "type": "str" + }, + { + "name": "network_interface_resource", + "type": "google.cloud.compute_v1.types.NetworkInterface" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -24430,21 +26454,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "start" + "shortName": "update_network_interface" }, - "description": "Sample for Start", - "file": "compute_v1_generated_instances_start_sync.py", + "description": "Sample for UpdateNetworkInterface", + "file": "compute_v1_generated_instances_update_network_interface_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Start_sync", + "regionTag": "compute_v1_generated_Instances_UpdateNetworkInterface_sync", "segments": [ { - "end": 53, + "end": 54, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 54, "start": 27, "type": "SHORT" }, @@ -24454,22 +26478,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 47, + "end": 48, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 50, - "start": 48, + "end": 51, + "start": 49, "type": "REQUEST_EXECUTION" }, { - "end": 54, - "start": 51, + "end": 55, + "start": 52, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_start_sync.py" + "title": "compute_v1_generated_instances_update_network_interface_sync.py" }, { "canonical": true, @@ -24478,19 +26502,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.stop", + "fullName": "google.cloud.compute_v1.InstancesClient.update_shielded_instance_config", "method": { - "fullName": "google.cloud.compute.v1.Instances.Stop", + "fullName": "google.cloud.compute.v1.Instances.UpdateShieldedInstanceConfig", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Stop" + "shortName": "UpdateShieldedInstanceConfig" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.StopInstanceRequest" + "type": "google.cloud.compute_v1.types.UpdateShieldedInstanceConfigInstanceRequest" }, { "name": "project", @@ -24504,6 +26528,10 @@ "name": "instance", "type": "str" }, + { + "name": "shielded_instance_config_resource", + "type": "google.cloud.compute_v1.types.ShieldedInstanceConfig" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -24518,13 +26546,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "stop" + "shortName": "update_shielded_instance_config" }, - "description": "Sample for Stop", - "file": "compute_v1_generated_instances_stop_sync.py", + "description": "Sample for UpdateShieldedInstanceConfig", + "file": "compute_v1_generated_instances_update_shielded_instance_config_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Stop_sync", + "regionTag": "compute_v1_generated_Instances_UpdateShieldedInstanceConfig_sync", "segments": [ { "end": 53, @@ -24557,7 +26585,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_stop_sync.py" + "title": "compute_v1_generated_instances_update_shielded_instance_config_sync.py" }, { "canonical": true, @@ -24566,19 +26594,19 @@ "fullName": "google.cloud.compute_v1.InstancesClient", "shortName": "InstancesClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.suspend", + "fullName": "google.cloud.compute_v1.InstancesClient.update", "method": { - "fullName": "google.cloud.compute.v1.Instances.Suspend", + "fullName": "google.cloud.compute.v1.Instances.Update", "service": { "fullName": "google.cloud.compute.v1.Instances", "shortName": "Instances" }, - "shortName": "Suspend" + "shortName": "Update" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SuspendInstanceRequest" + "type": "google.cloud.compute_v1.types.UpdateInstanceRequest" }, { "name": "project", @@ -24592,6 +26620,10 @@ "name": "instance", "type": "str" }, + { + "name": "instance_resource", + "type": "google.cloud.compute_v1.types.Instance" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -24606,13 +26638,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "suspend" + "shortName": "update" }, - "description": "Sample for Suspend", - "file": "compute_v1_generated_instances_suspend_sync.py", + "description": "Sample for Update", + "file": "compute_v1_generated_instances_update_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Suspend_sync", + "regionTag": "compute_v1_generated_Instances_Update_sync", "segments": [ { "end": 53, @@ -24645,28 +26677,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_suspend_sync.py" + "title": "compute_v1_generated_instances_update_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", + "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Instances.TestIamPermissions", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.Delete", "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", + "shortName": "InstantSnapshotGroups" }, - "shortName": "TestIamPermissions" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInstanceRequest" + "type": "google.cloud.compute_v1.types.DeleteInstantSnapshotGroupRequest" }, { "name": "project", @@ -24677,13 +26709,9 @@ "type": "str" }, { - "name": "resource", + "name": "instant_snapshot_group", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -24697,14 +26725,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_instances_test_iam_permissions_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_instant_snapshot_groups_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_Delete_sync", "segments": [ { "end": 53, @@ -24737,28 +26765,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_test_iam_permissions_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", + "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.update_access_config", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Instances.UpdateAccessConfig", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", + "shortName": "InstantSnapshotGroups" }, - "shortName": "UpdateAccessConfig" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateAccessConfigInstanceRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyInstantSnapshotGroupRequest" }, { "name": "project", @@ -24769,17 +26797,9 @@ "type": "str" }, { - "name": "instance", - "type": "str" - }, - { - "name": "network_interface", + "name": "resource", "type": "str" }, - { - "name": "access_config_resource", - "type": "google.cloud.compute_v1.types.AccessConfig" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -24793,22 +26813,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update_access_config" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for UpdateAccessConfig", - "file": "compute_v1_generated_instances_update_access_config_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_instant_snapshot_groups_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_UpdateAccessConfig_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_GetIamPolicy_sync", "segments": [ { - "end": 54, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 53, "start": 27, "type": "SHORT" }, @@ -24818,43 +26838,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_update_access_config_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", + "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.update_display_device", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.get", "method": { - "fullName": "google.cloud.compute.v1.Instances.UpdateDisplayDevice", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.Get", "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", + "shortName": "InstantSnapshotGroups" }, - "shortName": "UpdateDisplayDevice" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateDisplayDeviceInstanceRequest" + "type": "google.cloud.compute_v1.types.GetInstantSnapshotGroupRequest" }, { "name": "project", @@ -24865,13 +26885,9 @@ "type": "str" }, { - "name": "instance", + "name": "instant_snapshot_group", "type": "str" }, - { - "name": "display_device_resource", - "type": "google.cloud.compute_v1.types.DisplayDevice" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -24885,14 +26901,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update_display_device" + "resultType": "google.cloud.compute_v1.types.InstantSnapshotGroup", + "shortName": "get" }, - "description": "Sample for UpdateDisplayDevice", - "file": "compute_v1_generated_instances_update_display_device_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_instant_snapshot_groups_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_UpdateDisplayDevice_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_Get_sync", "segments": [ { "end": 53, @@ -24925,28 +26941,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_update_display_device_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", + "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.update_network_interface", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.Instances.UpdateNetworkInterface", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.Insert", "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", + "shortName": "InstantSnapshotGroups" }, - "shortName": "UpdateNetworkInterface" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateNetworkInterfaceInstanceRequest" + "type": "google.cloud.compute_v1.types.InsertInstantSnapshotGroupRequest" }, { "name": "project", @@ -24957,16 +26973,8 @@ "type": "str" }, { - "name": "instance", - "type": "str" - }, - { - "name": "network_interface", - "type": "str" - }, - { - "name": "network_interface_resource", - "type": "google.cloud.compute_v1.types.NetworkInterface" + "name": "instant_snapshot_group_resource", + "type": "google.cloud.compute_v1.types.InstantSnapshotGroup" }, { "name": "retry", @@ -24982,21 +26990,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update_network_interface" + "shortName": "insert" }, - "description": "Sample for UpdateNetworkInterface", - "file": "compute_v1_generated_instances_update_network_interface_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instant_snapshot_groups_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_UpdateNetworkInterface_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_Insert_sync", "segments": [ { - "end": 54, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 54, + "end": 52, "start": 27, "type": "SHORT" }, @@ -25006,43 +27014,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 48, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 51, - "start": 49, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 55, - "start": 52, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_update_network_interface_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", + "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.update_shielded_instance_config", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.list", "method": { - "fullName": "google.cloud.compute.v1.Instances.UpdateShieldedInstanceConfig", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.List", "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", + "shortName": "InstantSnapshotGroups" }, - "shortName": "UpdateShieldedInstanceConfig" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateShieldedInstanceConfigInstanceRequest" + "type": "google.cloud.compute_v1.types.ListInstantSnapshotGroupsRequest" }, { "name": "project", @@ -25052,14 +27060,6 @@ "name": "zone", "type": "str" }, - { - "name": "instance", - "type": "str" - }, - { - "name": "shielded_instance_config_resource", - "type": "google.cloud.compute_v1.types.ShieldedInstanceConfig" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25073,14 +27073,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update_shielded_instance_config" + "resultType": "google.cloud.compute_v1.services.instant_snapshot_groups.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for UpdateShieldedInstanceConfig", - "file": "compute_v1_generated_instances_update_shielded_instance_config_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_instant_snapshot_groups_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_UpdateShieldedInstanceConfig_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_List_sync", "segments": [ { "end": 53, @@ -25098,43 +27098,43 @@ "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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_update_shielded_instance_config_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstancesClient", - "shortName": "InstancesClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", + "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstancesClient.update", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Instances.Update", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.SetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.Instances", - "shortName": "Instances" + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", + "shortName": "InstantSnapshotGroups" }, - "shortName": "Update" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateInstanceRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyInstantSnapshotGroupRequest" }, { "name": "project", @@ -25145,12 +27145,12 @@ "type": "str" }, { - "name": "instance", + "name": "resource", "type": "str" }, { - "name": "instance_resource", - "type": "google.cloud.compute_v1.types.Instance" + "name": "zone_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.ZoneSetPolicyRequest" }, { "name": "retry", @@ -25165,14 +27165,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "set_iam_policy" }, - "description": "Sample for Update", - "file": "compute_v1_generated_instances_update_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_instant_snapshot_groups_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Instances_Update_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_SetIamPolicy_sync", "segments": [ { "end": 53, @@ -25205,7 +27205,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instances_update_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_set_iam_policy_sync.py" }, { "canonical": true, @@ -25214,19 +27214,19 @@ "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", "shortName": "InstantSnapshotGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.delete", + "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.Delete", + "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", "shortName": "InstantSnapshotGroups" }, - "shortName": "Delete" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstantSnapshotGroupRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInstantSnapshotGroupRequest" }, { "name": "project", @@ -25237,9 +27237,13 @@ "type": "str" }, { - "name": "instant_snapshot_group", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25253,14 +27257,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instant_snapshot_groups_delete_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_instant_snapshot_groups_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_Delete_sync", + "regionTag": "compute_v1_generated_InstantSnapshotGroups_TestIamPermissions_sync", "segments": [ { "end": 53, @@ -25293,41 +27297,33 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshot_groups_delete_sync.py" + "title": "compute_v1_generated_instant_snapshot_groups_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", - "shortName": "InstantSnapshotGroupsClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", + "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.GetIamPolicy", + "fullName": "google.cloud.compute.v1.InstantSnapshots.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", - "shortName": "InstantSnapshotGroups" + "fullName": "google.cloud.compute.v1.InstantSnapshots", + "shortName": "InstantSnapshots" }, - "shortName": "GetIamPolicy" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyInstantSnapshotGroupRequest" + "type": "google.cloud.compute_v1.types.AggregatedListInstantSnapshotsRequest" }, { "name": "project", "type": "str" }, - { - "name": "zone", - "type": "str" - }, - { - "name": "resource", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25341,22 +27337,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.cloud.compute_v1.services.instant_snapshots.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_instant_snapshot_groups_get_iam_policy_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_instant_snapshots_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_AggregatedList_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -25366,43 +27362,43 @@ "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_v1_generated_instant_snapshot_groups_get_iam_policy_sync.py" + "title": "compute_v1_generated_instant_snapshots_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", - "shortName": "InstantSnapshotGroupsClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", + "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.get", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.Get", + "fullName": "google.cloud.compute.v1.InstantSnapshots.Delete", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", - "shortName": "InstantSnapshotGroups" + "fullName": "google.cloud.compute.v1.InstantSnapshots", + "shortName": "InstantSnapshots" }, - "shortName": "Get" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstantSnapshotGroupRequest" + "type": "google.cloud.compute_v1.types.DeleteInstantSnapshotRequest" }, { "name": "project", @@ -25413,7 +27409,7 @@ "type": "str" }, { - "name": "instant_snapshot_group", + "name": "instant_snapshot", "type": "str" }, { @@ -25429,14 +27425,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstantSnapshotGroup", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instant_snapshot_groups_get_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_instant_snapshots_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_Get_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_Delete_sync", "segments": [ { "end": 53, @@ -25469,28 +27465,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshot_groups_get_sync.py" + "title": "compute_v1_generated_instant_snapshots_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", - "shortName": "InstantSnapshotGroupsClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", + "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.insert", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.Insert", + "fullName": "google.cloud.compute.v1.InstantSnapshots.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", - "shortName": "InstantSnapshotGroups" + "fullName": "google.cloud.compute.v1.InstantSnapshots", + "shortName": "InstantSnapshots" }, - "shortName": "Insert" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstantSnapshotGroupRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyInstantSnapshotRequest" }, { "name": "project", @@ -25501,8 +27497,8 @@ "type": "str" }, { - "name": "instant_snapshot_group_resource", - "type": "google.cloud.compute_v1.types.InstantSnapshotGroup" + "name": "resource", + "type": "str" }, { "name": "retry", @@ -25517,22 +27513,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instant_snapshot_groups_insert_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_instant_snapshots_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_Insert_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_GetIamPolicy_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -25542,43 +27538,43 @@ "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_v1_generated_instant_snapshot_groups_insert_sync.py" + "title": "compute_v1_generated_instant_snapshots_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", - "shortName": "InstantSnapshotGroupsClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", + "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.list", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.List", + "fullName": "google.cloud.compute.v1.InstantSnapshots.Get", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", - "shortName": "InstantSnapshotGroups" + "fullName": "google.cloud.compute.v1.InstantSnapshots", + "shortName": "InstantSnapshots" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstantSnapshotGroupsRequest" + "type": "google.cloud.compute_v1.types.GetInstantSnapshotRequest" }, { "name": "project", @@ -25588,6 +27584,10 @@ "name": "zone", "type": "str" }, + { + "name": "instant_snapshot", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25601,14 +27601,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instant_snapshot_groups.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.InstantSnapshot", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_instant_snapshot_groups_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_instant_snapshots_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_List_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_Get_sync", "segments": [ { "end": 53, @@ -25626,43 +27626,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { "end": 54, - "start": 50, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshot_groups_list_sync.py" + "title": "compute_v1_generated_instant_snapshots_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", - "shortName": "InstantSnapshotGroupsClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", + "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.SetIamPolicy", + "fullName": "google.cloud.compute.v1.InstantSnapshots.Insert", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", - "shortName": "InstantSnapshotGroups" + "fullName": "google.cloud.compute.v1.InstantSnapshots", + "shortName": "InstantSnapshots" }, - "shortName": "SetIamPolicy" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyInstantSnapshotGroupRequest" + "type": "google.cloud.compute_v1.types.InsertInstantSnapshotRequest" }, { "name": "project", @@ -25673,12 +27673,8 @@ "type": "str" }, { - "name": "resource", - "type": "str" - }, - { - "name": "zone_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.ZoneSetPolicyRequest" + "name": "instant_snapshot_resource", + "type": "google.cloud.compute_v1.types.InstantSnapshot" }, { "name": "retry", @@ -25693,22 +27689,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_instant_snapshot_groups_set_iam_policy_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_instant_snapshots_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_Insert_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -25718,43 +27714,43 @@ "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_v1_generated_instant_snapshot_groups_set_iam_policy_sync.py" + "title": "compute_v1_generated_instant_snapshots_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient", - "shortName": "InstantSnapshotGroupsClient" + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", + "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotGroupsClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups.TestIamPermissions", + "fullName": "google.cloud.compute.v1.InstantSnapshots.List", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshotGroups", - "shortName": "InstantSnapshotGroups" + "fullName": "google.cloud.compute.v1.InstantSnapshots", + "shortName": "InstantSnapshots" }, - "shortName": "TestIamPermissions" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInstantSnapshotGroupRequest" + "type": "google.cloud.compute_v1.types.ListInstantSnapshotsRequest" }, { "name": "project", @@ -25764,14 +27760,6 @@ "name": "zone", "type": "str" }, - { - "name": "resource", - "type": "str" - }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25785,14 +27773,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.services.instant_snapshots.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_instant_snapshot_groups_test_iam_permissions_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_instant_snapshots_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshotGroups_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_List_sync", "segments": [ { "end": 53, @@ -25810,22 +27798,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, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshot_groups_test_iam_permissions_sync.py" + "title": "compute_v1_generated_instant_snapshots_list_sync.py" }, { "canonical": true, @@ -25834,24 +27822,36 @@ "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.aggregated_list", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.AggregatedList", + "fullName": "google.cloud.compute.v1.InstantSnapshots.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.InstantSnapshots", "shortName": "InstantSnapshots" }, - "shortName": "AggregatedList" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListInstantSnapshotsRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyInstantSnapshotRequest" }, { "name": "project", "type": "str" }, + { + "name": "zone", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "zone_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.ZoneSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25865,22 +27865,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instant_snapshots.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "set_iam_policy" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_instant_snapshots_aggregated_list_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_instant_snapshots_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_AggregatedList_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_SetIamPolicy_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -25890,22 +27890,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_v1_generated_instant_snapshots_aggregated_list_sync.py" + "title": "compute_v1_generated_instant_snapshots_set_iam_policy_sync.py" }, { "canonical": true, @@ -25914,19 +27914,19 @@ "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.delete", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.set_labels", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.Delete", + "fullName": "google.cloud.compute.v1.InstantSnapshots.SetLabels", "service": { "fullName": "google.cloud.compute.v1.InstantSnapshots", "shortName": "InstantSnapshots" }, - "shortName": "Delete" + "shortName": "SetLabels" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.SetLabelsInstantSnapshotRequest" }, { "name": "project", @@ -25937,9 +27937,13 @@ "type": "str" }, { - "name": "instant_snapshot", + "name": "resource", "type": "str" }, + { + "name": "zone_set_labels_request_resource", + "type": "google.cloud.compute_v1.types.ZoneSetLabelsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -25954,13 +27958,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "set_labels" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_instant_snapshots_delete_sync.py", + "description": "Sample for SetLabels", + "file": "compute_v1_generated_instant_snapshots_set_labels_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_Delete_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_SetLabels_sync", "segments": [ { "end": 53, @@ -25993,7 +27997,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshots_delete_sync.py" + "title": "compute_v1_generated_instant_snapshots_set_labels_sync.py" }, { "canonical": true, @@ -26002,19 +28006,19 @@ "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", "shortName": "InstantSnapshotsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.GetIamPolicy", + "fullName": "google.cloud.compute.v1.InstantSnapshots.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.InstantSnapshots", "shortName": "InstantSnapshots" }, - "shortName": "GetIamPolicy" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInstantSnapshotRequest" }, { "name": "project", @@ -26028,6 +28032,10 @@ "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26041,14 +28049,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_instant_snapshots_get_iam_policy_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_instant_snapshots_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_InstantSnapshots_TestIamPermissions_sync", "segments": [ { "end": 53, @@ -26081,39 +28089,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshots_get_iam_policy_sync.py" + "title": "compute_v1_generated_instant_snapshots_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", - "shortName": "InstantSnapshotsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", + "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.Get", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Delete", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshots", - "shortName": "InstantSnapshots" + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", + "shortName": "InterconnectAttachmentGroups" }, - "shortName": "Get" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.DeleteInterconnectAttachmentGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "instant_snapshot", + "name": "interconnect_attachment_group", "type": "str" }, { @@ -26129,22 +28133,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InstantSnapshot", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for Get", - "file": "compute_v1_generated_instant_snapshots_get_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_interconnect_attachment_groups_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_Get_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Delete_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -26154,56 +28158,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_v1_generated_instant_snapshots_get_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", - "shortName": "InstantSnapshotsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", + "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.insert", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.Insert", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshots", - "shortName": "InstantSnapshots" + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", + "shortName": "InterconnectAttachmentGroups" }, - "shortName": "Insert" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyInterconnectAttachmentGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", + "name": "resource", "type": "str" }, - { - "name": "instant_snapshot_resource", - "type": "google.cloud.compute_v1.types.InstantSnapshot" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26217,14 +28217,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_instant_snapshots_insert_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_interconnect_attachment_groups_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_Insert_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_GetIamPolicy_sync", "segments": [ { "end": 52, @@ -26257,35 +28257,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshots_insert_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", - "shortName": "InstantSnapshotsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", + "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.list", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.get_operational_status", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.List", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.GetOperationalStatus", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshots", - "shortName": "InstantSnapshots" + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", + "shortName": "InterconnectAttachmentGroups" }, - "shortName": "List" + "shortName": "GetOperationalStatus" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInstantSnapshotsRequest" + "type": "google.cloud.compute_v1.types.GetOperationalStatusInterconnectAttachmentGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", + "name": "interconnect_attachment_group", "type": "str" }, { @@ -26301,22 +28301,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.instant_snapshots.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.InterconnectAttachmentGroupsGetOperationalStatusResponse", + "shortName": "get_operational_status" }, - "description": "Sample for List", - "file": "compute_v1_generated_instant_snapshots_list_sync.py", + "description": "Sample for GetOperationalStatus", + "file": "compute_v1_generated_interconnect_attachment_groups_get_operational_status_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_List_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_GetOperationalStatus_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -26336,50 +28336,42 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 53, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshots_list_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_get_operational_status_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", - "shortName": "InstantSnapshotsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", + "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.SetIamPolicy", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Get", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshots", - "shortName": "InstantSnapshots" + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", + "shortName": "InterconnectAttachmentGroups" }, - "shortName": "SetIamPolicy" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.GetInterconnectAttachmentGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "resource", + "name": "interconnect_attachment_group", "type": "str" }, - { - "name": "zone_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.ZoneSetPolicyRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26393,22 +28385,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.cloud.compute_v1.types.InterconnectAttachmentGroup", + "shortName": "get" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_instant_snapshots_set_iam_policy_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_interconnect_attachment_groups_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Get_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -26418,59 +28410,51 @@ "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_v1_generated_instant_snapshots_set_iam_policy_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", - "shortName": "InstantSnapshotsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", + "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.set_labels", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.SetLabels", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Insert", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshots", - "shortName": "InstantSnapshots" + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", + "shortName": "InterconnectAttachmentGroups" }, - "shortName": "SetLabels" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.InsertInterconnectAttachmentGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "zone", - "type": "str" - }, - { - "name": "resource", - "type": "str" - }, - { - "name": "zone_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.ZoneSetLabelsRequest" + "name": "interconnect_attachment_group_resource", + "type": "google.cloud.compute_v1.types.InterconnectAttachmentGroup" }, { "name": "retry", @@ -26486,21 +28470,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "shortName": "insert" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_instant_snapshots_set_labels_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_interconnect_attachment_groups_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_SetLabels_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Insert_sync", "segments": [ { - "end": 53, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 51, "start": 27, "type": "SHORT" }, @@ -26510,60 +28494,48 @@ "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": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_instant_snapshots_set_labels_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient", - "shortName": "InstantSnapshotsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", + "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InstantSnapshotsClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InstantSnapshots.TestIamPermissions", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.List", "service": { - "fullName": "google.cloud.compute.v1.InstantSnapshots", - "shortName": "InstantSnapshots" + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", + "shortName": "InterconnectAttachmentGroups" }, - "shortName": "TestIamPermissions" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInstantSnapshotRequest" + "type": "google.cloud.compute_v1.types.ListInterconnectAttachmentGroupsRequest" }, { "name": "project", "type": "str" }, - { - "name": "zone", - "type": "str" - }, - { - "name": "resource", - "type": "str" - }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26577,22 +28549,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.services.interconnect_attachment_groups.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_instant_snapshots_test_iam_permissions_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_interconnect_attachment_groups_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InstantSnapshots_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_List_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -26602,22 +28574,22 @@ "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_v1_generated_instant_snapshots_test_iam_permissions_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_list_sync.py" }, { "canonical": true, @@ -26626,19 +28598,19 @@ "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.delete", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.patch", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Delete", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Patch", "service": { "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", "shortName": "InterconnectAttachmentGroups" }, - "shortName": "Delete" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.PatchInterconnectAttachmentGroupRequest" }, { "name": "project", @@ -26648,6 +28620,10 @@ "name": "interconnect_attachment_group", "type": "str" }, + { + "name": "interconnect_attachment_group_resource", + "type": "google.cloud.compute_v1.types.InterconnectAttachmentGroup" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26662,13 +28638,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "patch" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_interconnect_attachment_groups_delete_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_interconnect_attachment_groups_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Delete_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Patch_sync", "segments": [ { "end": 52, @@ -26701,7 +28677,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_delete_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_patch_sync.py" }, { "canonical": true, @@ -26710,19 +28686,19 @@ "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.GetIamPolicy", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", "shortName": "InterconnectAttachmentGroups" }, - "shortName": "GetIamPolicy" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyInterconnectAttachmentGroupRequest" }, { "name": "project", @@ -26732,6 +28708,10 @@ "name": "resource", "type": "str" }, + { + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26746,13 +28726,13 @@ } ], "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "shortName": "set_iam_policy" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_interconnect_attachment_groups_get_iam_policy_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_interconnect_attachment_groups_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_SetIamPolicy_sync", "segments": [ { "end": 52, @@ -26785,7 +28765,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_get_iam_policy_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_set_iam_policy_sync.py" }, { "canonical": true, @@ -26794,28 +28774,32 @@ "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", "shortName": "InterconnectAttachmentGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.get_operational_status", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.GetOperationalStatus", + "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", "shortName": "InterconnectAttachmentGroups" }, - "shortName": "GetOperationalStatus" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetOperationalStatusInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInterconnectAttachmentGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_attachment_group", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26829,14 +28813,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectAttachmentGroupsGetOperationalStatusResponse", - "shortName": "get_operational_status" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for GetOperationalStatus", - "file": "compute_v1_generated_interconnect_attachment_groups_get_operational_status_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_interconnect_attachment_groups_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_GetOperationalStatus_sync", + "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -26869,37 +28853,33 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_get_operational_status_sync.py" + "title": "compute_v1_generated_interconnect_attachment_groups_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", - "shortName": "InterconnectAttachmentGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", + "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Get", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", - "shortName": "InterconnectAttachmentGroups" + "fullName": "google.cloud.compute.v1.InterconnectAttachments", + "shortName": "InterconnectAttachments" }, - "shortName": "Get" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.AggregatedListInterconnectAttachmentsRequest" }, { "name": "project", "type": "str" }, - { - "name": "interconnect_attachment_group", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -26913,14 +28893,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectAttachmentGroup", - "shortName": "get" + "resultType": "google.cloud.compute_v1.services.interconnect_attachments.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for Get", - "file": "compute_v1_generated_interconnect_attachment_groups_get_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_interconnect_attachments_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Get_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_AggregatedList_sync", "segments": [ { "end": 52, @@ -26938,51 +28918,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_get_sync.py" + "title": "compute_v1_generated_interconnect_attachments_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", - "shortName": "InterconnectAttachmentGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", + "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.insert", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Insert", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.Delete", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", - "shortName": "InterconnectAttachmentGroups" + "fullName": "google.cloud.compute.v1.InterconnectAttachments", + "shortName": "InterconnectAttachments" }, - "shortName": "Insert" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.DeleteInterconnectAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_attachment_group_resource", - "type": "google.cloud.compute_v1.types.InterconnectAttachmentGroup" + "name": "region", + "type": "str" + }, + { + "name": "interconnect_attachment", + "type": "str" }, { "name": "retry", @@ -26998,21 +28982,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "shortName": "delete" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_interconnect_attachment_groups_insert_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_interconnect_attachments_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Insert_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_Delete_sync", "segments": [ { - "end": 51, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 53, "start": 27, "type": "SHORT" }, @@ -27022,48 +29006,56 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 47, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 50, + "start": 48, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 54, + "start": 51, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_insert_sync.py" + "title": "compute_v1_generated_interconnect_attachments_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", - "shortName": "InterconnectAttachmentGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", + "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.list", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.List", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.Get", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", - "shortName": "InterconnectAttachmentGroups" + "fullName": "google.cloud.compute.v1.InterconnectAttachments", + "shortName": "InterconnectAttachments" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInterconnectAttachmentGroupsRequest" + "type": "google.cloud.compute_v1.types.GetInterconnectAttachmentRequest" }, { "name": "project", "type": "str" }, + { + "name": "region", + "type": "str" + }, + { + "name": "interconnect_attachment", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -27077,22 +29069,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.interconnect_attachment_groups.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.InterconnectAttachment", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_interconnect_attachment_groups_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_interconnect_attachments_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_List_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -27102,55 +29094,55 @@ "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_v1_generated_interconnect_attachment_groups_list_sync.py" + "title": "compute_v1_generated_interconnect_attachments_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", - "shortName": "InterconnectAttachmentGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", + "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.patch", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.Patch", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.Insert", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", - "shortName": "InterconnectAttachmentGroups" + "fullName": "google.cloud.compute.v1.InterconnectAttachments", + "shortName": "InterconnectAttachments" }, - "shortName": "Patch" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.InsertInterconnectAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_attachment_group", + "name": "region", "type": "str" }, { - "name": "interconnect_attachment_group_resource", - "type": "google.cloud.compute_v1.types.InterconnectAttachmentGroup" + "name": "interconnect_attachment_resource", + "type": "google.cloud.compute_v1.types.InterconnectAttachment" }, { "name": "retry", @@ -27166,13 +29158,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "shortName": "insert" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_interconnect_attachment_groups_patch_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_interconnect_attachments_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_Patch_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_Insert_sync", "segments": [ { "end": 52, @@ -27205,41 +29197,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_patch_sync.py" + "title": "compute_v1_generated_interconnect_attachments_insert_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", - "shortName": "InterconnectAttachmentGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", + "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.SetIamPolicy", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.List", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", - "shortName": "InterconnectAttachmentGroups" + "fullName": "google.cloud.compute.v1.InterconnectAttachments", + "shortName": "InterconnectAttachments" }, - "shortName": "SetIamPolicy" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.ListInterconnectAttachmentsRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, - { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -27253,22 +29241,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.cloud.compute_v1.services.interconnect_attachments.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_interconnect_attachment_groups_set_iam_policy_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_interconnect_attachments_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -27288,45 +29276,49 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachment_groups_set_iam_policy_sync.py" + "title": "compute_v1_generated_interconnect_attachments_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient", - "shortName": "InterconnectAttachmentGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", + "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentGroupsClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.patch", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups.TestIamPermissions", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.Patch", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachmentGroups", - "shortName": "InterconnectAttachmentGroups" + "fullName": "google.cloud.compute.v1.InterconnectAttachments", + "shortName": "InterconnectAttachments" }, - "shortName": "TestIamPermissions" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInterconnectAttachmentGroupRequest" + "type": "google.cloud.compute_v1.types.PatchInterconnectAttachmentRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "region", "type": "str" }, { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + "name": "interconnect_attachment", + "type": "str" + }, + { + "name": "interconnect_attachment_resource", + "type": "google.cloud.compute_v1.types.InterconnectAttachment" }, { "name": "retry", @@ -27341,22 +29333,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_interconnect_attachment_groups_test_iam_permissions_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_interconnect_attachments_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachmentGroups_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_Patch_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -27366,22 +29358,22 @@ "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_v1_generated_interconnect_attachment_groups_test_iam_permissions_sync.py" + "title": "compute_v1_generated_interconnect_attachments_patch_sync.py" }, { "canonical": true, @@ -27390,24 +29382,36 @@ "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", "shortName": "InterconnectAttachmentsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.aggregated_list", + "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.set_labels", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.AggregatedList", + "fullName": "google.cloud.compute.v1.InterconnectAttachments.SetLabels", "service": { "fullName": "google.cloud.compute.v1.InterconnectAttachments", "shortName": "InterconnectAttachments" }, - "shortName": "AggregatedList" + "shortName": "SetLabels" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListInterconnectAttachmentsRequest" + "type": "google.cloud.compute_v1.types.SetLabelsInterconnectAttachmentRequest" }, { "name": "project", "type": "str" }, + { + "name": "region", + "type": "str" + }, + { + "name": "resource", + "type": "str" + }, + { + "name": "region_set_labels_request_resource", + "type": "google.cloud.compute_v1.types.RegionSetLabelsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -27421,22 +29425,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.interconnect_attachments.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_labels" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_interconnect_attachments_aggregated_list_sync.py", + "description": "Sample for SetLabels", + "file": "compute_v1_generated_interconnect_attachments_set_labels_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_AggregatedList_sync", + "regionTag": "compute_v1_generated_InterconnectAttachments_SetLabels_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -27446,55 +29450,55 @@ "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_v1_generated_interconnect_attachments_aggregated_list_sync.py" + "title": "compute_v1_generated_interconnect_attachments_set_labels_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", - "shortName": "InterconnectAttachmentsClient" + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", + "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.delete", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.create_members", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.Delete", + "fullName": "google.cloud.compute.v1.InterconnectGroups.CreateMembers", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments", - "shortName": "InterconnectAttachments" + "fullName": "google.cloud.compute.v1.InterconnectGroups", + "shortName": "InterconnectGroups" }, - "shortName": "Delete" + "shortName": "CreateMembers" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInterconnectAttachmentRequest" + "type": "google.cloud.compute_v1.types.CreateMembersInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "interconnect_group", "type": "str" }, { - "name": "interconnect_attachment", - "type": "str" + "name": "interconnect_groups_create_members_request_resource", + "type": "google.cloud.compute_v1.types.InterconnectGroupsCreateMembersRequest" }, { "name": "retry", @@ -27510,21 +29514,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "create_members" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_interconnect_attachments_delete_sync.py", + "description": "Sample for CreateMembers", + "file": "compute_v1_generated_interconnect_groups_create_members_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_Delete_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_CreateMembers_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -27534,54 +29538,50 @@ "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_v1_generated_interconnect_attachments_delete_sync.py" + "title": "compute_v1_generated_interconnect_groups_create_members_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", - "shortName": "InterconnectAttachmentsClient" + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", + "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.Get", + "fullName": "google.cloud.compute.v1.InterconnectGroups.Delete", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments", - "shortName": "InterconnectAttachments" + "fullName": "google.cloud.compute.v1.InterconnectGroups", + "shortName": "InterconnectGroups" }, - "shortName": "Get" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInterconnectAttachmentRequest" + "type": "google.cloud.compute_v1.types.DeleteInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", - "type": "str" - }, - { - "name": "interconnect_attachment", + "name": "interconnect_group", "type": "str" }, { @@ -27597,22 +29597,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectAttachment", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for Get", - "file": "compute_v1_generated_interconnect_attachments_get_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_interconnect_groups_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_Get_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_Delete_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -27622,56 +29622,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_v1_generated_interconnect_attachments_get_sync.py" + "title": "compute_v1_generated_interconnect_groups_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", - "shortName": "InterconnectAttachmentsClient" + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", + "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.insert", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.Insert", + "fullName": "google.cloud.compute.v1.InterconnectGroups.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments", - "shortName": "InterconnectAttachments" + "fullName": "google.cloud.compute.v1.InterconnectGroups", + "shortName": "InterconnectGroups" }, - "shortName": "Insert" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInterconnectAttachmentRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "resource", "type": "str" }, - { - "name": "interconnect_attachment_resource", - "type": "google.cloud.compute_v1.types.InterconnectAttachment" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -27685,14 +29681,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_interconnect_attachments_insert_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_interconnect_groups_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_Insert_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_GetIamPolicy_sync", "segments": [ { "end": 52, @@ -27725,35 +29721,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachments_insert_sync.py" + "title": "compute_v1_generated_interconnect_groups_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", - "shortName": "InterconnectAttachmentsClient" + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", + "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.list", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.get_operational_status", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.List", + "fullName": "google.cloud.compute.v1.InterconnectGroups.GetOperationalStatus", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments", - "shortName": "InterconnectAttachments" + "fullName": "google.cloud.compute.v1.InterconnectGroups", + "shortName": "InterconnectGroups" }, - "shortName": "List" + "shortName": "GetOperationalStatus" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInterconnectAttachmentsRequest" + "type": "google.cloud.compute_v1.types.GetOperationalStatusInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", + "name": "interconnect_group", "type": "str" }, { @@ -27769,22 +29765,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.interconnect_attachments.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.InterconnectGroupsGetOperationalStatusResponse", + "shortName": "get_operational_status" }, - "description": "Sample for List", - "file": "compute_v1_generated_interconnect_attachments_list_sync.py", + "description": "Sample for GetOperationalStatus", + "file": "compute_v1_generated_interconnect_groups_get_operational_status_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_List_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_GetOperationalStatus_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -27804,50 +29800,42 @@ "type": "REQUEST_EXECUTION" }, { - "end": 54, + "end": 53, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachments_list_sync.py" + "title": "compute_v1_generated_interconnect_groups_get_operational_status_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", - "shortName": "InterconnectAttachmentsClient" + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", + "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.patch", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.Patch", + "fullName": "google.cloud.compute.v1.InterconnectGroups.Get", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments", - "shortName": "InterconnectAttachments" + "fullName": "google.cloud.compute.v1.InterconnectGroups", + "shortName": "InterconnectGroups" }, - "shortName": "Patch" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchInterconnectAttachmentRequest" + "type": "google.cloud.compute_v1.types.GetInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", - "type": "str" - }, - { - "name": "interconnect_attachment", + "name": "interconnect_group", "type": "str" }, - { - "name": "interconnect_attachment_resource", - "type": "google.cloud.compute_v1.types.InterconnectAttachment" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -27861,22 +29849,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1.types.InterconnectGroup", + "shortName": "get" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_interconnect_attachments_patch_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_interconnect_groups_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_Patch_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_Get_sync", "segments": [ { - "end": 53, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 52, "start": 27, "type": "SHORT" }, @@ -27886,59 +29874,51 @@ "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_v1_generated_interconnect_attachments_patch_sync.py" + "title": "compute_v1_generated_interconnect_groups_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient", - "shortName": "InterconnectAttachmentsClient" + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", + "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectAttachmentsClient.set_labels", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments.SetLabels", + "fullName": "google.cloud.compute.v1.InterconnectGroups.Insert", "service": { - "fullName": "google.cloud.compute.v1.InterconnectAttachments", - "shortName": "InterconnectAttachments" + "fullName": "google.cloud.compute.v1.InterconnectGroups", + "shortName": "InterconnectGroups" }, - "shortName": "SetLabels" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsInterconnectAttachmentRequest" + "type": "google.cloud.compute_v1.types.InsertInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "region", - "type": "str" - }, - { - "name": "resource", - "type": "str" - }, - { - "name": "region_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.RegionSetLabelsRequest" + "name": "interconnect_group_resource", + "type": "google.cloud.compute_v1.types.InterconnectGroup" }, { "name": "retry", @@ -27954,21 +29934,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "shortName": "insert" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_interconnect_attachments_set_labels_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_interconnect_groups_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectAttachments_SetLabels_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_Insert_sync", "segments": [ { - "end": 53, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 53, + "end": 51, "start": 27, "type": "SHORT" }, @@ -27978,22 +29958,22 @@ "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": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_attachments_set_labels_sync.py" + "title": "compute_v1_generated_interconnect_groups_insert_sync.py" }, { "canonical": true, @@ -28002,32 +29982,24 @@ "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.create_members", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.CreateMembers", + "fullName": "google.cloud.compute.v1.InterconnectGroups.List", "service": { "fullName": "google.cloud.compute.v1.InterconnectGroups", "shortName": "InterconnectGroups" }, - "shortName": "CreateMembers" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.CreateMembersInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.ListInterconnectGroupsRequest" }, { "name": "project", "type": "str" }, - { - "name": "interconnect_group", - "type": "str" - }, - { - "name": "interconnect_groups_create_members_request_resource", - "type": "google.cloud.compute_v1.types.InterconnectGroupsCreateMembersRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28041,14 +30013,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "create_members" + "resultType": "google.cloud.compute_v1.services.interconnect_groups.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for CreateMembers", - "file": "compute_v1_generated_interconnect_groups_create_members_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_interconnect_groups_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_CreateMembers_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_List_sync", "segments": [ { "end": 52, @@ -28066,22 +30038,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_create_members_sync.py" + "title": "compute_v1_generated_interconnect_groups_list_sync.py" }, { "canonical": true, @@ -28090,19 +30062,19 @@ "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.delete", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.patch", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.Delete", + "fullName": "google.cloud.compute.v1.InterconnectGroups.Patch", "service": { "fullName": "google.cloud.compute.v1.InterconnectGroups", "shortName": "InterconnectGroups" }, - "shortName": "Delete" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.PatchInterconnectGroupRequest" }, { "name": "project", @@ -28112,6 +30084,10 @@ "name": "interconnect_group", "type": "str" }, + { + "name": "interconnect_group_resource", + "type": "google.cloud.compute_v1.types.InterconnectGroup" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28126,13 +30102,13 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "shortName": "patch" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_interconnect_groups_delete_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_interconnect_groups_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_Delete_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_Patch_sync", "segments": [ { "end": 52, @@ -28165,7 +30141,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_delete_sync.py" + "title": "compute_v1_generated_interconnect_groups_patch_sync.py" }, { "canonical": true, @@ -28174,19 +30150,19 @@ "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.GetIamPolicy", + "fullName": "google.cloud.compute.v1.InterconnectGroups.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.InterconnectGroups", "shortName": "InterconnectGroups" }, - "shortName": "GetIamPolicy" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyInterconnectGroupRequest" }, { "name": "project", @@ -28196,6 +30172,10 @@ "name": "resource", "type": "str" }, + { + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28210,13 +30190,13 @@ } ], "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "shortName": "set_iam_policy" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_interconnect_groups_get_iam_policy_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_interconnect_groups_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_SetIamPolicy_sync", "segments": [ { "end": 52, @@ -28249,7 +30229,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_get_iam_policy_sync.py" + "title": "compute_v1_generated_interconnect_groups_set_iam_policy_sync.py" }, { "canonical": true, @@ -28258,28 +30238,32 @@ "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", "shortName": "InterconnectGroupsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.get_operational_status", + "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.GetOperationalStatus", + "fullName": "google.cloud.compute.v1.InterconnectGroups.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.InterconnectGroups", "shortName": "InterconnectGroups" }, - "shortName": "GetOperationalStatus" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetOperationalStatusInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsInterconnectGroupRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_group", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28293,14 +30277,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectGroupsGetOperationalStatusResponse", - "shortName": "get_operational_status" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for GetOperationalStatus", - "file": "compute_v1_generated_interconnect_groups_get_operational_status_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_interconnect_groups_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_GetOperationalStatus_sync", + "regionTag": "compute_v1_generated_InterconnectGroups_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -28333,35 +30317,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_get_operational_status_sync.py" + "title": "compute_v1_generated_interconnect_groups_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", - "shortName": "InterconnectGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectLocationsClient", + "shortName": "InterconnectLocationsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectLocationsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.Get", + "fullName": "google.cloud.compute.v1.InterconnectLocations.Get", "service": { - "fullName": "google.cloud.compute.v1.InterconnectGroups", - "shortName": "InterconnectGroups" + "fullName": "google.cloud.compute.v1.InterconnectLocations", + "shortName": "InterconnectLocations" }, "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.GetInterconnectLocationRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_group", + "name": "interconnect_location", "type": "str" }, { @@ -28377,14 +30361,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectGroup", + "resultType": "google.cloud.compute_v1.types.InterconnectLocation", "shortName": "get" }, "description": "Sample for Get", - "file": "compute_v1_generated_interconnect_groups_get_sync.py", + "file": "compute_v1_generated_interconnect_locations_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_Get_sync", + "regionTag": "compute_v1_generated_InterconnectLocations_Get_sync", "segments": [ { "end": 52, @@ -28417,37 +30401,33 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_get_sync.py" + "title": "compute_v1_generated_interconnect_locations_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", - "shortName": "InterconnectGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectLocationsClient", + "shortName": "InterconnectLocationsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.insert", + "fullName": "google.cloud.compute_v1.InterconnectLocationsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.Insert", + "fullName": "google.cloud.compute.v1.InterconnectLocations.List", "service": { - "fullName": "google.cloud.compute.v1.InterconnectGroups", - "shortName": "InterconnectGroups" + "fullName": "google.cloud.compute.v1.InterconnectLocations", + "shortName": "InterconnectLocations" }, - "shortName": "Insert" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.ListInterconnectLocationsRequest" }, { "name": "project", "type": "str" }, - { - "name": "interconnect_group_resource", - "type": "google.cloud.compute_v1.types.InterconnectGroup" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28461,22 +30441,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.services.interconnect_locations.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_interconnect_groups_insert_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_interconnect_locations_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_Insert_sync", + "regionTag": "compute_v1_generated_InterconnectLocations_List_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -28496,38 +30476,42 @@ "type": "REQUEST_EXECUTION" }, { - "end": 52, + "end": 53, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_insert_sync.py" + "title": "compute_v1_generated_interconnect_locations_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", - "shortName": "InterconnectGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient", + "shortName": "InterconnectRemoteLocationsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.list", + "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.List", + "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations.Get", "service": { - "fullName": "google.cloud.compute.v1.InterconnectGroups", - "shortName": "InterconnectGroups" + "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations", + "shortName": "InterconnectRemoteLocations" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInterconnectGroupsRequest" + "type": "google.cloud.compute_v1.types.GetInterconnectRemoteLocationRequest" }, { "name": "project", "type": "str" }, + { + "name": "interconnect_remote_location", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28541,14 +30525,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.interconnect_groups.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.InterconnectRemoteLocation", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_interconnect_groups_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_interconnect_remote_locations_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_List_sync", + "regionTag": "compute_v1_generated_InterconnectRemoteLocations_Get_sync", "segments": [ { "end": 52, @@ -28566,56 +30550,48 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 49, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_list_sync.py" + "title": "compute_v1_generated_interconnect_remote_locations_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", - "shortName": "InterconnectGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient", + "shortName": "InterconnectRemoteLocationsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.patch", + "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient.list", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.Patch", + "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations.List", "service": { - "fullName": "google.cloud.compute.v1.InterconnectGroups", - "shortName": "InterconnectGroups" + "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations", + "shortName": "InterconnectRemoteLocations" }, - "shortName": "Patch" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.ListInterconnectRemoteLocationsRequest" }, { "name": "project", "type": "str" }, - { - "name": "interconnect_group", - "type": "str" - }, - { - "name": "interconnect_group_resource", - "type": "google.cloud.compute_v1.types.InterconnectGroup" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28629,14 +30605,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1.services.interconnect_remote_locations.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_interconnect_groups_patch_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_interconnect_remote_locations_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_Patch_sync", + "regionTag": "compute_v1_generated_InterconnectRemoteLocations_List_sync", "segments": [ { "end": 52, @@ -28654,56 +30630,52 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_patch_sync.py" + "title": "compute_v1_generated_interconnect_remote_locations_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", - "shortName": "InterconnectGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectsClient", + "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.InterconnectsClient.delete", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.SetIamPolicy", + "fullName": "google.cloud.compute.v1.Interconnects.Delete", "service": { - "fullName": "google.cloud.compute.v1.InterconnectGroups", - "shortName": "InterconnectGroups" + "fullName": "google.cloud.compute.v1.Interconnects", + "shortName": "Interconnects" }, - "shortName": "SetIamPolicy" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.DeleteInterconnectRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "interconnect", "type": "str" }, - { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28717,14 +30689,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_interconnect_groups_set_iam_policy_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_interconnects_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_Interconnects_Delete_sync", "segments": [ { "end": 52, @@ -28757,41 +30729,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_set_iam_policy_sync.py" + "title": "compute_v1_generated_interconnects_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient", - "shortName": "InterconnectGroupsClient" + "fullName": "google.cloud.compute_v1.InterconnectsClient", + "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectGroupsClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.InterconnectsClient.get_diagnostics", "method": { - "fullName": "google.cloud.compute.v1.InterconnectGroups.TestIamPermissions", + "fullName": "google.cloud.compute.v1.Interconnects.GetDiagnostics", "service": { - "fullName": "google.cloud.compute.v1.InterconnectGroups", - "shortName": "InterconnectGroups" + "fullName": "google.cloud.compute.v1.Interconnects", + "shortName": "Interconnects" }, - "shortName": "TestIamPermissions" + "shortName": "GetDiagnostics" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsInterconnectGroupRequest" + "type": "google.cloud.compute_v1.types.GetDiagnosticsInterconnectRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "interconnect", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -28805,14 +30773,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.types.InterconnectsGetDiagnosticsResponse", + "shortName": "get_diagnostics" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_interconnect_groups_test_iam_permissions_sync.py", + "description": "Sample for GetDiagnostics", + "file": "compute_v1_generated_interconnects_get_diagnostics_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectGroups_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_Interconnects_GetDiagnostics_sync", "segments": [ { "end": 52, @@ -28845,35 +30813,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_groups_test_iam_permissions_sync.py" + "title": "compute_v1_generated_interconnects_get_diagnostics_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectLocationsClient", - "shortName": "InterconnectLocationsClient" + "fullName": "google.cloud.compute_v1.InterconnectsClient", + "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectLocationsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectsClient.get_macsec_config", "method": { - "fullName": "google.cloud.compute.v1.InterconnectLocations.Get", + "fullName": "google.cloud.compute.v1.Interconnects.GetMacsecConfig", "service": { - "fullName": "google.cloud.compute.v1.InterconnectLocations", - "shortName": "InterconnectLocations" + "fullName": "google.cloud.compute.v1.Interconnects", + "shortName": "Interconnects" }, - "shortName": "Get" + "shortName": "GetMacsecConfig" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInterconnectLocationRequest" + "type": "google.cloud.compute_v1.types.GetMacsecConfigInterconnectRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_location", + "name": "interconnect", "type": "str" }, { @@ -28889,14 +30857,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectLocation", - "shortName": "get" + "resultType": "google.cloud.compute_v1.types.InterconnectsGetMacsecConfigResponse", + "shortName": "get_macsec_config" }, - "description": "Sample for Get", - "file": "compute_v1_generated_interconnect_locations_get_sync.py", + "description": "Sample for GetMacsecConfig", + "file": "compute_v1_generated_interconnects_get_macsec_config_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectLocations_Get_sync", + "regionTag": "compute_v1_generated_Interconnects_GetMacsecConfig_sync", "segments": [ { "end": 52, @@ -28929,115 +30897,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_locations_get_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.InterconnectLocationsClient", - "shortName": "InterconnectLocationsClient" - }, - "fullName": "google.cloud.compute_v1.InterconnectLocationsClient.list", - "method": { - "fullName": "google.cloud.compute.v1.InterconnectLocations.List", - "service": { - "fullName": "google.cloud.compute.v1.InterconnectLocations", - "shortName": "InterconnectLocations" - }, - "shortName": "List" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.ListInterconnectLocationsRequest" - }, - { - "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_v1.services.interconnect_locations.pagers.ListPager", - "shortName": "list" - }, - "description": "Sample for List", - "file": "compute_v1_generated_interconnect_locations_list_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectLocations_List_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_v1_generated_interconnect_locations_list_sync.py" + "title": "compute_v1_generated_interconnects_get_macsec_config_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient", - "shortName": "InterconnectRemoteLocationsClient" + "fullName": "google.cloud.compute_v1.InterconnectsClient", + "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectsClient.get", "method": { - "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations.Get", + "fullName": "google.cloud.compute.v1.Interconnects.Get", "service": { - "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations", - "shortName": "InterconnectRemoteLocations" + "fullName": "google.cloud.compute.v1.Interconnects", + "shortName": "Interconnects" }, "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInterconnectRemoteLocationRequest" + "type": "google.cloud.compute_v1.types.GetInterconnectRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_remote_location", + "name": "interconnect", "type": "str" }, { @@ -29053,14 +30941,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectRemoteLocation", + "resultType": "google.cloud.compute_v1.types.Interconnect", "shortName": "get" }, "description": "Sample for Get", - "file": "compute_v1_generated_interconnect_remote_locations_get_sync.py", + "file": "compute_v1_generated_interconnects_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectRemoteLocations_Get_sync", + "regionTag": "compute_v1_generated_Interconnects_Get_sync", "segments": [ { "end": 52, @@ -29093,33 +30981,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_remote_locations_get_sync.py" + "title": "compute_v1_generated_interconnects_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient", - "shortName": "InterconnectRemoteLocationsClient" + "fullName": "google.cloud.compute_v1.InterconnectsClient", + "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectRemoteLocationsClient.list", + "fullName": "google.cloud.compute_v1.InterconnectsClient.insert", "method": { - "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations.List", + "fullName": "google.cloud.compute.v1.Interconnects.Insert", "service": { - "fullName": "google.cloud.compute.v1.InterconnectRemoteLocations", - "shortName": "InterconnectRemoteLocations" + "fullName": "google.cloud.compute.v1.Interconnects", + "shortName": "Interconnects" }, - "shortName": "List" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInterconnectRemoteLocationsRequest" + "type": "google.cloud.compute_v1.types.InsertInterconnectRequest" }, { "name": "project", "type": "str" }, + { + "name": "interconnect_resource", + "type": "google.cloud.compute_v1.types.Interconnect" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -29133,22 +31025,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.interconnect_remote_locations.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for List", - "file": "compute_v1_generated_interconnect_remote_locations_list_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_interconnects_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_InterconnectRemoteLocations_List_sync", + "regionTag": "compute_v1_generated_Interconnects_Insert_sync", "segments": [ { - "end": 52, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 51, "start": 27, "type": "SHORT" }, @@ -29168,12 +31060,12 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 52, "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnect_remote_locations_list_sync.py" + "title": "compute_v1_generated_interconnects_insert_sync.py" }, { "canonical": true, @@ -29182,28 +31074,24 @@ "fullName": "google.cloud.compute_v1.InterconnectsClient", "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.delete", + "fullName": "google.cloud.compute_v1.InterconnectsClient.list", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.Delete", + "fullName": "google.cloud.compute.v1.Interconnects.List", "service": { "fullName": "google.cloud.compute.v1.Interconnects", "shortName": "Interconnects" }, - "shortName": "Delete" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteInterconnectRequest" + "type": "google.cloud.compute_v1.types.ListInterconnectsRequest" }, { "name": "project", "type": "str" }, - { - "name": "interconnect", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -29217,14 +31105,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.services.interconnects.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_interconnects_delete_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_interconnects_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_Delete_sync", + "regionTag": "compute_v1_generated_Interconnects_List_sync", "segments": [ { "end": 52, @@ -29242,22 +31130,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_delete_sync.py" + "title": "compute_v1_generated_interconnects_list_sync.py" }, { "canonical": true, @@ -29266,19 +31154,19 @@ "fullName": "google.cloud.compute_v1.InterconnectsClient", "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.get_diagnostics", + "fullName": "google.cloud.compute_v1.InterconnectsClient.patch", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.GetDiagnostics", + "fullName": "google.cloud.compute.v1.Interconnects.Patch", "service": { "fullName": "google.cloud.compute.v1.Interconnects", "shortName": "Interconnects" }, - "shortName": "GetDiagnostics" + "shortName": "Patch" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetDiagnosticsInterconnectRequest" + "type": "google.cloud.compute_v1.types.PatchInterconnectRequest" }, { "name": "project", @@ -29288,6 +31176,10 @@ "name": "interconnect", "type": "str" }, + { + "name": "interconnect_resource", + "type": "google.cloud.compute_v1.types.Interconnect" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -29301,14 +31193,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectsGetDiagnosticsResponse", - "shortName": "get_diagnostics" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "patch" }, - "description": "Sample for GetDiagnostics", - "file": "compute_v1_generated_interconnects_get_diagnostics_sync.py", + "description": "Sample for Patch", + "file": "compute_v1_generated_interconnects_patch_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_GetDiagnostics_sync", + "regionTag": "compute_v1_generated_Interconnects_Patch_sync", "segments": [ { "end": 52, @@ -29341,7 +31233,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_get_diagnostics_sync.py" + "title": "compute_v1_generated_interconnects_patch_sync.py" }, { "canonical": true, @@ -29350,28 +31242,32 @@ "fullName": "google.cloud.compute_v1.InterconnectsClient", "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.get_macsec_config", + "fullName": "google.cloud.compute_v1.InterconnectsClient.set_labels", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.GetMacsecConfig", + "fullName": "google.cloud.compute.v1.Interconnects.SetLabels", "service": { "fullName": "google.cloud.compute.v1.Interconnects", "shortName": "Interconnects" }, - "shortName": "GetMacsecConfig" + "shortName": "SetLabels" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetMacsecConfigInterconnectRequest" + "type": "google.cloud.compute_v1.types.SetLabelsInterconnectRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect", + "name": "resource", "type": "str" }, + { + "name": "global_set_labels_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetLabelsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -29385,14 +31281,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.InterconnectsGetMacsecConfigResponse", - "shortName": "get_macsec_config" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_labels" }, - "description": "Sample for GetMacsecConfig", - "file": "compute_v1_generated_interconnects_get_macsec_config_sync.py", + "description": "Sample for SetLabels", + "file": "compute_v1_generated_interconnects_set_labels_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_GetMacsecConfig_sync", + "regionTag": "compute_v1_generated_Interconnects_SetLabels_sync", "segments": [ { "end": 52, @@ -29425,7 +31321,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_get_macsec_config_sync.py" + "title": "compute_v1_generated_interconnects_set_labels_sync.py" }, { "canonical": true, @@ -29434,19 +31330,19 @@ "fullName": "google.cloud.compute_v1.InterconnectsClient", "shortName": "InterconnectsClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.get", + "fullName": "google.cloud.compute_v1.InterconnectsClient.set_name", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.Get", + "fullName": "google.cloud.compute.v1.Interconnects.SetName", "service": { "fullName": "google.cloud.compute.v1.Interconnects", "shortName": "Interconnects" }, - "shortName": "Get" + "shortName": "SetName" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetInterconnectRequest" + "type": "google.cloud.compute_v1.types.SetNameInterconnectRequest" }, { "name": "project", @@ -29456,6 +31352,10 @@ "name": "interconnect", "type": "str" }, + { + "name": "interconnects_set_name_request_resource", + "type": "google.cloud.compute_v1.types.InterconnectsSetNameRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -29469,14 +31369,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Interconnect", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_name" }, - "description": "Sample for Get", - "file": "compute_v1_generated_interconnects_get_sync.py", + "description": "Sample for SetName", + "file": "compute_v1_generated_interconnects_set_name_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_Get_sync", + "regionTag": "compute_v1_generated_Interconnects_SetName_sync", "segments": [ { "end": 52, @@ -29509,36 +31409,36 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_get_sync.py" + "title": "compute_v1_generated_interconnects_set_name_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectsClient", - "shortName": "InterconnectsClient" + "fullName": "google.cloud.compute_v1.LicenseCodesClient", + "shortName": "LicenseCodesClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.insert", + "fullName": "google.cloud.compute_v1.LicenseCodesClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.Insert", + "fullName": "google.cloud.compute.v1.LicenseCodes.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.Interconnects", - "shortName": "Interconnects" + "fullName": "google.cloud.compute.v1.LicenseCodes", + "shortName": "LicenseCodes" }, - "shortName": "Insert" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertInterconnectRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyLicenseCodeRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect_resource", - "type": "google.cloud.compute_v1.types.Interconnect" + "name": "resource", + "type": "str" }, { "name": "retry", @@ -29553,22 +31453,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_interconnects_insert_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_license_codes_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_Insert_sync", + "regionTag": "compute_v1_generated_LicenseCodes_GetIamPolicy_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -29578,48 +31478,52 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_insert_sync.py" + "title": "compute_v1_generated_license_codes_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectsClient", - "shortName": "InterconnectsClient" + "fullName": "google.cloud.compute_v1.LicenseCodesClient", + "shortName": "LicenseCodesClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.list", + "fullName": "google.cloud.compute_v1.LicenseCodesClient.get", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.List", + "fullName": "google.cloud.compute.v1.LicenseCodes.Get", "service": { - "fullName": "google.cloud.compute.v1.Interconnects", - "shortName": "Interconnects" + "fullName": "google.cloud.compute.v1.LicenseCodes", + "shortName": "LicenseCodes" }, - "shortName": "List" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListInterconnectsRequest" + "type": "google.cloud.compute_v1.types.GetLicenseCodeRequest" }, { "name": "project", "type": "str" }, + { + "name": "license_code", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -29633,14 +31537,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.interconnects.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.types.LicenseCode", + "shortName": "get" }, - "description": "Sample for List", - "file": "compute_v1_generated_interconnects_list_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_license_codes_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_List_sync", + "regionTag": "compute_v1_generated_LicenseCodes_Get_sync", "segments": [ { "end": 52, @@ -29658,55 +31562,55 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 49, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_list_sync.py" + "title": "compute_v1_generated_license_codes_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectsClient", - "shortName": "InterconnectsClient" + "fullName": "google.cloud.compute_v1.LicenseCodesClient", + "shortName": "LicenseCodesClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.patch", + "fullName": "google.cloud.compute_v1.LicenseCodesClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.Patch", + "fullName": "google.cloud.compute.v1.LicenseCodes.SetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.Interconnects", - "shortName": "Interconnects" + "fullName": "google.cloud.compute.v1.LicenseCodes", + "shortName": "LicenseCodes" }, - "shortName": "Patch" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.PatchInterconnectRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyLicenseCodeRequest" }, { "name": "project", "type": "str" }, { - "name": "interconnect", + "name": "resource", "type": "str" }, { - "name": "interconnect_resource", - "type": "google.cloud.compute_v1.types.Interconnect" + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" }, { "name": "retry", @@ -29721,14 +31625,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "patch" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "set_iam_policy" }, - "description": "Sample for Patch", - "file": "compute_v1_generated_interconnects_patch_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_license_codes_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_Patch_sync", + "regionTag": "compute_v1_generated_LicenseCodes_SetIamPolicy_sync", "segments": [ { "end": 52, @@ -29761,28 +31665,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_patch_sync.py" + "title": "compute_v1_generated_license_codes_set_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.InterconnectsClient", - "shortName": "InterconnectsClient" + "fullName": "google.cloud.compute_v1.LicenseCodesClient", + "shortName": "LicenseCodesClient" }, - "fullName": "google.cloud.compute_v1.InterconnectsClient.set_labels", + "fullName": "google.cloud.compute_v1.LicenseCodesClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.Interconnects.SetLabels", + "fullName": "google.cloud.compute.v1.LicenseCodes.TestIamPermissions", "service": { - "fullName": "google.cloud.compute.v1.Interconnects", - "shortName": "Interconnects" + "fullName": "google.cloud.compute.v1.LicenseCodes", + "shortName": "LicenseCodes" }, - "shortName": "SetLabels" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsInterconnectRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsLicenseCodeRequest" }, { "name": "project", @@ -29793,8 +31697,8 @@ "type": "str" }, { - "name": "global_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetLabelsRequest" + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" }, { "name": "retry", @@ -29809,14 +31713,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_interconnects_set_labels_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_license_codes_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Interconnects_SetLabels_sync", + "regionTag": "compute_v1_generated_LicenseCodes_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -29849,35 +31753,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_interconnects_set_labels_sync.py" + "title": "compute_v1_generated_license_codes_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicenseCodesClient", - "shortName": "LicenseCodesClient" + "fullName": "google.cloud.compute_v1.LicensesClient", + "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicenseCodesClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.LicensesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.LicenseCodes.GetIamPolicy", + "fullName": "google.cloud.compute.v1.Licenses.Delete", "service": { - "fullName": "google.cloud.compute.v1.LicenseCodes", - "shortName": "LicenseCodes" + "fullName": "google.cloud.compute.v1.Licenses", + "shortName": "Licenses" }, - "shortName": "GetIamPolicy" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyLicenseCodeRequest" + "type": "google.cloud.compute_v1.types.DeleteLicenseRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "license_", "type": "str" }, { @@ -29893,14 +31797,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_license_codes_get_iam_policy_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_licenses_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_LicenseCodes_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_Licenses_Delete_sync", "segments": [ { "end": 52, @@ -29933,35 +31837,35 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_license_codes_get_iam_policy_sync.py" + "title": "compute_v1_generated_licenses_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicenseCodesClient", - "shortName": "LicenseCodesClient" + "fullName": "google.cloud.compute_v1.LicensesClient", + "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicenseCodesClient.get", + "fullName": "google.cloud.compute_v1.LicensesClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.LicenseCodes.Get", + "fullName": "google.cloud.compute.v1.Licenses.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.LicenseCodes", - "shortName": "LicenseCodes" + "fullName": "google.cloud.compute.v1.Licenses", + "shortName": "Licenses" }, - "shortName": "Get" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetLicenseCodeRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyLicenseRequest" }, { "name": "project", "type": "str" }, { - "name": "license_code", + "name": "resource", "type": "str" }, { @@ -29977,14 +31881,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.LicenseCode", - "shortName": "get" + "resultType": "google.cloud.compute_v1.types.Policy", + "shortName": "get_iam_policy" }, - "description": "Sample for Get", - "file": "compute_v1_generated_license_codes_get_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_licenses_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_LicenseCodes_Get_sync", + "regionTag": "compute_v1_generated_Licenses_GetIamPolicy_sync", "segments": [ { "end": 52, @@ -30017,41 +31921,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_license_codes_get_sync.py" + "title": "compute_v1_generated_licenses_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicenseCodesClient", - "shortName": "LicenseCodesClient" + "fullName": "google.cloud.compute_v1.LicensesClient", + "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicenseCodesClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.LicensesClient.get", "method": { - "fullName": "google.cloud.compute.v1.LicenseCodes.SetIamPolicy", + "fullName": "google.cloud.compute.v1.Licenses.Get", "service": { - "fullName": "google.cloud.compute.v1.LicenseCodes", - "shortName": "LicenseCodes" + "fullName": "google.cloud.compute.v1.Licenses", + "shortName": "Licenses" }, - "shortName": "SetIamPolicy" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyLicenseCodeRequest" + "type": "google.cloud.compute_v1.types.GetLicenseRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "license_", "type": "str" }, - { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30065,14 +31965,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.cloud.compute_v1.types.License", + "shortName": "get" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_license_codes_set_iam_policy_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_licenses_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_LicenseCodes_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_Licenses_Get_sync", "segments": [ { "end": 52, @@ -30105,40 +32005,36 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_license_codes_set_iam_policy_sync.py" + "title": "compute_v1_generated_licenses_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicenseCodesClient", - "shortName": "LicenseCodesClient" + "fullName": "google.cloud.compute_v1.LicensesClient", + "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicenseCodesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.LicensesClient.insert", "method": { - "fullName": "google.cloud.compute.v1.LicenseCodes.TestIamPermissions", + "fullName": "google.cloud.compute.v1.Licenses.Insert", "service": { - "fullName": "google.cloud.compute.v1.LicenseCodes", - "shortName": "LicenseCodes" + "fullName": "google.cloud.compute.v1.Licenses", + "shortName": "Licenses" }, - "shortName": "TestIamPermissions" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsLicenseCodeRequest" + "type": "google.cloud.compute_v1.types.InsertLicenseRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", - "type": "str" - }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + "name": "license_resource", + "type": "google.cloud.compute_v1.types.License" }, { "name": "retry", @@ -30153,22 +32049,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "insert" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_license_codes_test_iam_permissions_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_licenses_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_LicenseCodes_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_Licenses_Insert_sync", "segments": [ { - "end": 52, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 51, "start": 27, "type": "SHORT" }, @@ -30178,22 +32074,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_license_codes_test_iam_permissions_sync.py" + "title": "compute_v1_generated_licenses_insert_sync.py" }, { "canonical": true, @@ -30202,28 +32098,24 @@ "fullName": "google.cloud.compute_v1.LicensesClient", "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.delete", + "fullName": "google.cloud.compute_v1.LicensesClient.list", "method": { - "fullName": "google.cloud.compute.v1.Licenses.Delete", + "fullName": "google.cloud.compute.v1.Licenses.List", "service": { "fullName": "google.cloud.compute.v1.Licenses", "shortName": "Licenses" }, - "shortName": "Delete" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteLicenseRequest" + "type": "google.cloud.compute_v1.types.ListLicensesRequest" }, { "name": "project", "type": "str" }, - { - "name": "license_", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30237,14 +32129,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.services.licenses.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_licenses_delete_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_licenses_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_Delete_sync", + "regionTag": "compute_v1_generated_Licenses_List_sync", "segments": [ { "end": 52, @@ -30262,22 +32154,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_delete_sync.py" + "title": "compute_v1_generated_licenses_list_sync.py" }, { "canonical": true, @@ -30286,19 +32178,19 @@ "fullName": "google.cloud.compute_v1.LicensesClient", "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.LicensesClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Licenses.GetIamPolicy", + "fullName": "google.cloud.compute.v1.Licenses.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.Licenses", "shortName": "Licenses" }, - "shortName": "GetIamPolicy" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyLicenseRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyLicenseRequest" }, { "name": "project", @@ -30308,6 +32200,10 @@ "name": "resource", "type": "str" }, + { + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30322,13 +32218,13 @@ } ], "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "shortName": "set_iam_policy" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_licenses_get_iam_policy_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_licenses_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_Licenses_SetIamPolicy_sync", "segments": [ { "end": 52, @@ -30361,7 +32257,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_get_iam_policy_sync.py" + "title": "compute_v1_generated_licenses_set_iam_policy_sync.py" }, { "canonical": true, @@ -30370,28 +32266,32 @@ "fullName": "google.cloud.compute_v1.LicensesClient", "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.get", + "fullName": "google.cloud.compute_v1.LicensesClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.Licenses.Get", + "fullName": "google.cloud.compute.v1.Licenses.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.Licenses", "shortName": "Licenses" }, - "shortName": "Get" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetLicenseRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsLicenseRequest" }, { "name": "project", "type": "str" }, { - "name": "license_", + "name": "resource", "type": "str" }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30405,14 +32305,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.License", - "shortName": "get" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for Get", - "file": "compute_v1_generated_licenses_get_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_licenses_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_Get_sync", + "regionTag": "compute_v1_generated_Licenses_TestIamPermissions_sync", "segments": [ { "end": 52, @@ -30445,7 +32345,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_get_sync.py" + "title": "compute_v1_generated_licenses_test_iam_permissions_sync.py" }, { "canonical": true, @@ -30454,24 +32354,28 @@ "fullName": "google.cloud.compute_v1.LicensesClient", "shortName": "LicensesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.insert", + "fullName": "google.cloud.compute_v1.LicensesClient.update", "method": { - "fullName": "google.cloud.compute.v1.Licenses.Insert", + "fullName": "google.cloud.compute.v1.Licenses.Update", "service": { "fullName": "google.cloud.compute.v1.Licenses", "shortName": "Licenses" }, - "shortName": "Insert" + "shortName": "Update" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertLicenseRequest" + "type": "google.cloud.compute_v1.types.UpdateLicenseRequest" }, { "name": "project", "type": "str" }, + { + "name": "license_", + "type": "str" + }, { "name": "license_resource", "type": "google.cloud.compute_v1.types.License" @@ -30490,21 +32394,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "shortName": "update" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_licenses_insert_sync.py", + "description": "Sample for Update", + "file": "compute_v1_generated_licenses_update_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_Insert_sync", + "regionTag": "compute_v1_generated_Licenses_Update_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -30514,48 +32418,52 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_insert_sync.py" + "title": "compute_v1_generated_licenses_update_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicensesClient", - "shortName": "LicensesClient" + "fullName": "google.cloud.compute_v1.MachineImagesClient", + "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.list", + "fullName": "google.cloud.compute_v1.MachineImagesClient.delete", "method": { - "fullName": "google.cloud.compute.v1.Licenses.List", + "fullName": "google.cloud.compute.v1.MachineImages.Delete", "service": { - "fullName": "google.cloud.compute.v1.Licenses", - "shortName": "Licenses" + "fullName": "google.cloud.compute.v1.MachineImages", + "shortName": "MachineImages" }, - "shortName": "List" + "shortName": "Delete" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListLicensesRequest" + "type": "google.cloud.compute_v1.types.DeleteMachineImageRequest" }, { "name": "project", "type": "str" }, + { + "name": "machine_image", + "type": "str" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30569,14 +32477,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.licenses.pagers.ListPager", - "shortName": "list" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "delete" }, - "description": "Sample for List", - "file": "compute_v1_generated_licenses_list_sync.py", + "description": "Sample for Delete", + "file": "compute_v1_generated_machine_images_delete_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_List_sync", + "regionTag": "compute_v1_generated_MachineImages_Delete_sync", "segments": [ { "end": 52, @@ -30594,43 +32502,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 49, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_list_sync.py" + "title": "compute_v1_generated_machine_images_delete_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicensesClient", - "shortName": "LicensesClient" + "fullName": "google.cloud.compute_v1.MachineImagesClient", + "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.MachineImagesClient.get_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.Licenses.SetIamPolicy", + "fullName": "google.cloud.compute.v1.MachineImages.GetIamPolicy", "service": { - "fullName": "google.cloud.compute.v1.Licenses", - "shortName": "Licenses" + "fullName": "google.cloud.compute.v1.MachineImages", + "shortName": "MachineImages" }, - "shortName": "SetIamPolicy" + "shortName": "GetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyLicenseRequest" + "type": "google.cloud.compute_v1.types.GetIamPolicyMachineImageRequest" }, { "name": "project", @@ -30640,10 +32548,6 @@ "name": "resource", "type": "str" }, - { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30658,13 +32562,13 @@ } ], "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "shortName": "get_iam_policy" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_licenses_set_iam_policy_sync.py", + "description": "Sample for GetIamPolicy", + "file": "compute_v1_generated_machine_images_get_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_MachineImages_GetIamPolicy_sync", "segments": [ { "end": 52, @@ -30697,41 +32601,37 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_set_iam_policy_sync.py" + "title": "compute_v1_generated_machine_images_get_iam_policy_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicensesClient", - "shortName": "LicensesClient" + "fullName": "google.cloud.compute_v1.MachineImagesClient", + "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.MachineImagesClient.get", "method": { - "fullName": "google.cloud.compute.v1.Licenses.TestIamPermissions", + "fullName": "google.cloud.compute.v1.MachineImages.Get", "service": { - "fullName": "google.cloud.compute.v1.Licenses", - "shortName": "Licenses" + "fullName": "google.cloud.compute.v1.MachineImages", + "shortName": "MachineImages" }, - "shortName": "TestIamPermissions" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsLicenseRequest" + "type": "google.cloud.compute_v1.types.GetMachineImageRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "machine_image", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30745,14 +32645,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.types.MachineImage", + "shortName": "get" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_licenses_test_iam_permissions_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_machine_images_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_MachineImages_Get_sync", "segments": [ { "end": 52, @@ -30785,40 +32685,36 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_test_iam_permissions_sync.py" + "title": "compute_v1_generated_machine_images_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.LicensesClient", - "shortName": "LicensesClient" + "fullName": "google.cloud.compute_v1.MachineImagesClient", + "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.LicensesClient.update", + "fullName": "google.cloud.compute_v1.MachineImagesClient.insert", "method": { - "fullName": "google.cloud.compute.v1.Licenses.Update", + "fullName": "google.cloud.compute.v1.MachineImages.Insert", "service": { - "fullName": "google.cloud.compute.v1.Licenses", - "shortName": "Licenses" + "fullName": "google.cloud.compute.v1.MachineImages", + "shortName": "MachineImages" }, - "shortName": "Update" + "shortName": "Insert" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.UpdateLicenseRequest" + "type": "google.cloud.compute_v1.types.InsertMachineImageRequest" }, { "name": "project", "type": "str" }, { - "name": "license_", - "type": "str" - }, - { - "name": "license_resource", - "type": "google.cloud.compute_v1.types.License" + "name": "machine_image_resource", + "type": "google.cloud.compute_v1.types.MachineImage" }, { "name": "retry", @@ -30834,21 +32730,21 @@ } ], "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "update" + "shortName": "insert" }, - "description": "Sample for Update", - "file": "compute_v1_generated_licenses_update_sync.py", + "description": "Sample for Insert", + "file": "compute_v1_generated_machine_images_insert_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_Licenses_Update_sync", + "regionTag": "compute_v1_generated_MachineImages_Insert_sync", "segments": [ { - "end": 52, + "end": 51, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 51, "start": 27, "type": "SHORT" }, @@ -30858,22 +32754,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { - "end": 53, - "start": 50, + "end": 52, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_licenses_update_sync.py" + "title": "compute_v1_generated_machine_images_insert_sync.py" }, { "canonical": true, @@ -30882,28 +32778,24 @@ "fullName": "google.cloud.compute_v1.MachineImagesClient", "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.delete", + "fullName": "google.cloud.compute_v1.MachineImagesClient.list", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.Delete", + "fullName": "google.cloud.compute.v1.MachineImages.List", "service": { "fullName": "google.cloud.compute.v1.MachineImages", "shortName": "MachineImages" }, - "shortName": "Delete" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.DeleteMachineImageRequest" + "type": "google.cloud.compute_v1.types.ListMachineImagesRequest" }, { "name": "project", "type": "str" }, - { - "name": "machine_image", - "type": "str" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -30917,14 +32809,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "delete" + "resultType": "google.cloud.compute_v1.services.machine_images.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for Delete", - "file": "compute_v1_generated_machine_images_delete_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_machine_images_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_Delete_sync", + "regionTag": "compute_v1_generated_MachineImages_List_sync", "segments": [ { "end": 52, @@ -30942,22 +32834,22 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 46, + "end": 45, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 49, - "start": 47, + "end": 48, + "start": 46, "type": "REQUEST_EXECUTION" }, { "end": 53, - "start": 50, + "start": 49, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_delete_sync.py" + "title": "compute_v1_generated_machine_images_list_sync.py" }, { "canonical": true, @@ -30966,19 +32858,19 @@ "fullName": "google.cloud.compute_v1.MachineImagesClient", "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.get_iam_policy", + "fullName": "google.cloud.compute_v1.MachineImagesClient.set_iam_policy", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.GetIamPolicy", + "fullName": "google.cloud.compute.v1.MachineImages.SetIamPolicy", "service": { "fullName": "google.cloud.compute.v1.MachineImages", "shortName": "MachineImages" }, - "shortName": "GetIamPolicy" + "shortName": "SetIamPolicy" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetIamPolicyMachineImageRequest" + "type": "google.cloud.compute_v1.types.SetIamPolicyMachineImageRequest" }, { "name": "project", @@ -30988,6 +32880,10 @@ "name": "resource", "type": "str" }, + { + "name": "global_set_policy_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -31002,13 +32898,13 @@ } ], "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "get_iam_policy" + "shortName": "set_iam_policy" }, - "description": "Sample for GetIamPolicy", - "file": "compute_v1_generated_machine_images_get_iam_policy_sync.py", + "description": "Sample for SetIamPolicy", + "file": "compute_v1_generated_machine_images_set_iam_policy_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_GetIamPolicy_sync", + "regionTag": "compute_v1_generated_MachineImages_SetIamPolicy_sync", "segments": [ { "end": 52, @@ -31041,7 +32937,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_get_iam_policy_sync.py" + "title": "compute_v1_generated_machine_images_set_iam_policy_sync.py" }, { "canonical": true, @@ -31050,28 +32946,32 @@ "fullName": "google.cloud.compute_v1.MachineImagesClient", "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.get", + "fullName": "google.cloud.compute_v1.MachineImagesClient.set_labels", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.Get", + "fullName": "google.cloud.compute.v1.MachineImages.SetLabels", "service": { "fullName": "google.cloud.compute.v1.MachineImages", "shortName": "MachineImages" }, - "shortName": "Get" + "shortName": "SetLabels" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.GetMachineImageRequest" + "type": "google.cloud.compute_v1.types.SetLabelsMachineImageRequest" }, { "name": "project", "type": "str" }, { - "name": "machine_image", + "name": "resource", "type": "str" }, + { + "name": "global_set_labels_request_resource", + "type": "google.cloud.compute_v1.types.GlobalSetLabelsRequest" + }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -31085,14 +32985,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.MachineImage", - "shortName": "get" + "resultType": "google.api_core.extended_operation.ExtendedOperation", + "shortName": "set_labels" }, - "description": "Sample for Get", - "file": "compute_v1_generated_machine_images_get_sync.py", + "description": "Sample for SetLabels", + "file": "compute_v1_generated_machine_images_set_labels_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_Get_sync", + "regionTag": "compute_v1_generated_MachineImages_SetLabels_sync", "segments": [ { "end": 52, @@ -31125,7 +33025,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_get_sync.py" + "title": "compute_v1_generated_machine_images_set_labels_sync.py" }, { "canonical": true, @@ -31134,27 +33034,31 @@ "fullName": "google.cloud.compute_v1.MachineImagesClient", "shortName": "MachineImagesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.insert", + "fullName": "google.cloud.compute_v1.MachineImagesClient.test_iam_permissions", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.Insert", + "fullName": "google.cloud.compute.v1.MachineImages.TestIamPermissions", "service": { "fullName": "google.cloud.compute.v1.MachineImages", "shortName": "MachineImages" }, - "shortName": "Insert" + "shortName": "TestIamPermissions" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.InsertMachineImageRequest" + "type": "google.cloud.compute_v1.types.TestIamPermissionsMachineImageRequest" }, { "name": "project", "type": "str" }, { - "name": "machine_image_resource", - "type": "google.cloud.compute_v1.types.MachineImage" + "name": "resource", + "type": "str" + }, + { + "name": "test_permissions_request_resource", + "type": "google.cloud.compute_v1.types.TestPermissionsRequest" }, { "name": "retry", @@ -31169,22 +33073,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "insert" + "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", + "shortName": "test_iam_permissions" }, - "description": "Sample for Insert", - "file": "compute_v1_generated_machine_images_insert_sync.py", + "description": "Sample for TestIamPermissions", + "file": "compute_v1_generated_machine_images_test_iam_permissions_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_Insert_sync", + "regionTag": "compute_v1_generated_MachineImages_TestIamPermissions_sync", "segments": [ { - "end": 51, + "end": 52, "start": 27, "type": "FULL" }, { - "end": 51, + "end": 52, "start": 27, "type": "SHORT" }, @@ -31194,43 +33098,43 @@ "type": "CLIENT_INITIALIZATION" }, { - "end": 45, + "end": 46, "start": 41, "type": "REQUEST_INITIALIZATION" }, { - "end": 48, - "start": 46, + "end": 49, + "start": 47, "type": "REQUEST_EXECUTION" }, { - "end": 52, - "start": 49, + "end": 53, + "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_insert_sync.py" + "title": "compute_v1_generated_machine_images_test_iam_permissions_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.MachineImagesClient", - "shortName": "MachineImagesClient" + "fullName": "google.cloud.compute_v1.MachineTypesClient", + "shortName": "MachineTypesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.list", + "fullName": "google.cloud.compute_v1.MachineTypesClient.aggregated_list", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.List", + "fullName": "google.cloud.compute.v1.MachineTypes.AggregatedList", "service": { - "fullName": "google.cloud.compute.v1.MachineImages", - "shortName": "MachineImages" + "fullName": "google.cloud.compute.v1.MachineTypes", + "shortName": "MachineTypes" }, - "shortName": "List" + "shortName": "AggregatedList" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.ListMachineImagesRequest" + "type": "google.cloud.compute_v1.types.AggregatedListMachineTypesRequest" }, { "name": "project", @@ -31249,14 +33153,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.machine_images.pagers.ListPager", - "shortName": "list" + "resultType": "google.cloud.compute_v1.services.machine_types.pagers.AggregatedListPager", + "shortName": "aggregated_list" }, - "description": "Sample for List", - "file": "compute_v1_generated_machine_images_list_sync.py", + "description": "Sample for AggregatedList", + "file": "compute_v1_generated_machine_types_aggregated_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_List_sync", + "regionTag": "compute_v1_generated_MachineTypes_AggregatedList_sync", "segments": [ { "end": 52, @@ -31289,40 +33193,40 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_list_sync.py" + "title": "compute_v1_generated_machine_types_aggregated_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.MachineImagesClient", - "shortName": "MachineImagesClient" + "fullName": "google.cloud.compute_v1.MachineTypesClient", + "shortName": "MachineTypesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.set_iam_policy", + "fullName": "google.cloud.compute_v1.MachineTypesClient.get", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.SetIamPolicy", + "fullName": "google.cloud.compute.v1.MachineTypes.Get", "service": { - "fullName": "google.cloud.compute.v1.MachineImages", - "shortName": "MachineImages" + "fullName": "google.cloud.compute.v1.MachineTypes", + "shortName": "MachineTypes" }, - "shortName": "SetIamPolicy" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetIamPolicyMachineImageRequest" + "type": "google.cloud.compute_v1.types.GetMachineTypeRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "zone", "type": "str" }, { - "name": "global_set_policy_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetPolicyRequest" + "name": "machine_type", + "type": "str" }, { "name": "retry", @@ -31337,22 +33241,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.Policy", - "shortName": "set_iam_policy" + "resultType": "google.cloud.compute_v1.types.MachineType", + "shortName": "get" }, - "description": "Sample for SetIamPolicy", - "file": "compute_v1_generated_machine_images_set_iam_policy_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_machine_types_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_SetIamPolicy_sync", + "regionTag": "compute_v1_generated_MachineTypes_Get_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -31362,56 +33266,52 @@ "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_v1_generated_machine_images_set_iam_policy_sync.py" + "title": "compute_v1_generated_machine_types_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.MachineImagesClient", - "shortName": "MachineImagesClient" + "fullName": "google.cloud.compute_v1.MachineTypesClient", + "shortName": "MachineTypesClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.set_labels", + "fullName": "google.cloud.compute_v1.MachineTypesClient.list", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.SetLabels", + "fullName": "google.cloud.compute.v1.MachineTypes.List", "service": { - "fullName": "google.cloud.compute.v1.MachineImages", - "shortName": "MachineImages" + "fullName": "google.cloud.compute.v1.MachineTypes", + "shortName": "MachineTypes" }, - "shortName": "SetLabels" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.SetLabelsMachineImageRequest" + "type": "google.cloud.compute_v1.types.ListMachineTypesRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "zone", "type": "str" }, - { - "name": "global_set_labels_request_resource", - "type": "google.cloud.compute_v1.types.GlobalSetLabelsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -31425,22 +33325,22 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.api_core.extended_operation.ExtendedOperation", - "shortName": "set_labels" + "resultType": "google.cloud.compute_v1.services.machine_types.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for SetLabels", - "file": "compute_v1_generated_machine_images_set_labels_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_machine_types_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_SetLabels_sync", + "regionTag": "compute_v1_generated_MachineTypes_List_sync", "segments": [ { - "end": 52, + "end": 53, "start": 27, "type": "FULL" }, { - "end": 52, + "end": 53, "start": 27, "type": "SHORT" }, @@ -31460,46 +33360,42 @@ "type": "REQUEST_EXECUTION" }, { - "end": 53, + "end": 54, "start": 50, "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_set_labels_sync.py" + "title": "compute_v1_generated_machine_types_list_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.MachineImagesClient", - "shortName": "MachineImagesClient" + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient", + "shortName": "ManagedRulesetsClient" }, - "fullName": "google.cloud.compute_v1.MachineImagesClient.test_iam_permissions", + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient.get", "method": { - "fullName": "google.cloud.compute.v1.MachineImages.TestIamPermissions", + "fullName": "google.cloud.compute.v1.ManagedRulesets.Get", "service": { - "fullName": "google.cloud.compute.v1.MachineImages", - "shortName": "MachineImages" + "fullName": "google.cloud.compute.v1.ManagedRulesets", + "shortName": "ManagedRulesets" }, - "shortName": "TestIamPermissions" + "shortName": "Get" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.TestIamPermissionsMachineImageRequest" + "type": "google.cloud.compute_v1.types.GetManagedRulesetRequest" }, { "name": "project", "type": "str" }, { - "name": "resource", + "name": "managed_ruleset", "type": "str" }, - { - "name": "test_permissions_request_resource", - "type": "google.cloud.compute_v1.types.TestPermissionsRequest" - }, { "name": "retry", "type": "google.api_core.retry.Retry" @@ -31513,14 +33409,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.types.TestPermissionsResponse", - "shortName": "test_iam_permissions" + "resultType": "google.cloud.compute_v1.types.ManagedRuleset", + "shortName": "get" }, - "description": "Sample for TestIamPermissions", - "file": "compute_v1_generated_machine_images_test_iam_permissions_sync.py", + "description": "Sample for Get", + "file": "compute_v1_generated_managed_rulesets_get_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineImages_TestIamPermissions_sync", + "regionTag": "compute_v1_generated_ManagedRulesets_Get_sync", "segments": [ { "end": 52, @@ -31553,28 +33449,28 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_images_test_iam_permissions_sync.py" + "title": "compute_v1_generated_managed_rulesets_get_sync.py" }, { "canonical": true, "clientMethod": { "client": { - "fullName": "google.cloud.compute_v1.MachineTypesClient", - "shortName": "MachineTypesClient" + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient", + "shortName": "ManagedRulesetsClient" }, - "fullName": "google.cloud.compute_v1.MachineTypesClient.aggregated_list", + "fullName": "google.cloud.compute_v1.ManagedRulesetsClient.list", "method": { - "fullName": "google.cloud.compute.v1.MachineTypes.AggregatedList", + "fullName": "google.cloud.compute.v1.ManagedRulesets.List", "service": { - "fullName": "google.cloud.compute.v1.MachineTypes", - "shortName": "MachineTypes" + "fullName": "google.cloud.compute.v1.ManagedRulesets", + "shortName": "ManagedRulesets" }, - "shortName": "AggregatedList" + "shortName": "List" }, "parameters": [ { "name": "request", - "type": "google.cloud.compute_v1.types.AggregatedListMachineTypesRequest" + "type": "google.cloud.compute_v1.types.ListManagedRulesetsRequest" }, { "name": "project", @@ -31593,14 +33489,14 @@ "type": "Sequence[Tuple[str, Union[str, bytes]]]" } ], - "resultType": "google.cloud.compute_v1.services.machine_types.pagers.AggregatedListPager", - "shortName": "aggregated_list" + "resultType": "google.cloud.compute_v1.services.managed_rulesets.pagers.ListPager", + "shortName": "list" }, - "description": "Sample for AggregatedList", - "file": "compute_v1_generated_machine_types_aggregated_list_sync.py", + "description": "Sample for List", + "file": "compute_v1_generated_managed_rulesets_list_sync.py", "language": "PYTHON", "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineTypes_AggregatedList_sync", + "regionTag": "compute_v1_generated_ManagedRulesets_List_sync", "segments": [ { "end": 52, @@ -31633,179 +33529,7 @@ "type": "RESPONSE_HANDLING" } ], - "title": "compute_v1_generated_machine_types_aggregated_list_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.MachineTypesClient", - "shortName": "MachineTypesClient" - }, - "fullName": "google.cloud.compute_v1.MachineTypesClient.get", - "method": { - "fullName": "google.cloud.compute.v1.MachineTypes.Get", - "service": { - "fullName": "google.cloud.compute.v1.MachineTypes", - "shortName": "MachineTypes" - }, - "shortName": "Get" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.GetMachineTypeRequest" - }, - { - "name": "project", - "type": "str" - }, - { - "name": "zone", - "type": "str" - }, - { - "name": "machine_type", - "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_v1.types.MachineType", - "shortName": "get" - }, - "description": "Sample for Get", - "file": "compute_v1_generated_machine_types_get_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineTypes_Get_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_v1_generated_machine_types_get_sync.py" - }, - { - "canonical": true, - "clientMethod": { - "client": { - "fullName": "google.cloud.compute_v1.MachineTypesClient", - "shortName": "MachineTypesClient" - }, - "fullName": "google.cloud.compute_v1.MachineTypesClient.list", - "method": { - "fullName": "google.cloud.compute.v1.MachineTypes.List", - "service": { - "fullName": "google.cloud.compute.v1.MachineTypes", - "shortName": "MachineTypes" - }, - "shortName": "List" - }, - "parameters": [ - { - "name": "request", - "type": "google.cloud.compute_v1.types.ListMachineTypesRequest" - }, - { - "name": "project", - "type": "str" - }, - { - "name": "zone", - "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_v1.services.machine_types.pagers.ListPager", - "shortName": "list" - }, - "description": "Sample for List", - "file": "compute_v1_generated_machine_types_list_sync.py", - "language": "PYTHON", - "origin": "API_DEFINITION", - "regionTag": "compute_v1_generated_MachineTypes_List_sync", - "segments": [ - { - "end": 53, - "start": 27, - "type": "FULL" - }, - { - "end": 53, - "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": 54, - "start": 50, - "type": "RESPONSE_HANDLING" - } - ], - "title": "compute_v1_generated_machine_types_list_sync.py" + "title": "compute_v1_generated_managed_rulesets_list_sync.py" }, { "canonical": true, @@ -58167,6 +59891,98 @@ ], "title": "compute_v1_generated_region_network_firewall_policies_list_sync.py" }, + { + "canonical": true, + "clientMethod": { + "client": { + "fullName": "google.cloud.compute_v1.RegionNetworkFirewallPoliciesClient", + "shortName": "RegionNetworkFirewallPoliciesClient" + }, + "fullName": "google.cloud.compute_v1.RegionNetworkFirewallPoliciesClient.patch_association", + "method": { + "fullName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies.PatchAssociation", + "service": { + "fullName": "google.cloud.compute.v1.RegionNetworkFirewallPolicies", + "shortName": "RegionNetworkFirewallPolicies" + }, + "shortName": "PatchAssociation" + }, + "parameters": [ + { + "name": "request", + "type": "google.cloud.compute_v1.types.PatchAssociationRegionNetworkFirewallPolicyRequest" + }, + { + "name": "project", + "type": "str" + }, + { + "name": "region", + "type": "str" + }, + { + "name": "firewall_policy", + "type": "str" + }, + { + "name": "firewall_policy_association_resource", + "type": "google.cloud.compute_v1.types.FirewallPolicyAssociation" + }, + { + "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_association" + }, + "description": "Sample for PatchAssociation", + "file": "compute_v1_generated_region_network_firewall_policies_patch_association_sync.py", + "language": "PYTHON", + "origin": "API_DEFINITION", + "regionTag": "compute_v1_generated_RegionNetworkFirewallPolicies_PatchAssociation_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_v1_generated_region_network_firewall_policies_patch_association_sync.py" + }, { "canonical": true, "clientMethod": { diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnect_member_instances.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnect_member_instances.py new file mode 100644 index 000000000000..535467cfd0f4 --- /dev/null +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnect_member_instances.py @@ -0,0 +1,1911 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.accelerator_interconnect_member_instances import ( + AcceleratorInterconnectMemberInstancesClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ( + AcceleratorInterconnectMemberInstancesClient._get_client_cert_source( + None, False + ) + is None + ) + assert ( + AcceleratorInterconnectMemberInstancesClient._get_client_cert_source( + mock_provided_cert_source, False + ) + is None + ) + assert ( + AcceleratorInterconnectMemberInstancesClient._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 ( + AcceleratorInterconnectMemberInstancesClient._get_client_cert_source( + None, True + ) + is mock_default_cert_source + ) + assert ( + AcceleratorInterconnectMemberInstancesClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AcceleratorInterconnectMemberInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = ( + compute.AcceleratorInterconnectMemberInstancesListResponse() + ) + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = AcceleratorInterconnectMemberInstancesClient(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 = AcceleratorInterconnectMemberInstancesClient(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", + [ + (AcceleratorInterconnectMemberInstancesClient, "rest"), + ], +) +def test_accelerator_interconnect_member_instances_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.AcceleratorInterconnectMemberInstancesRestTransport, "rest"), + ], +) +def test_accelerator_interconnect_member_instances_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", + [ + (AcceleratorInterconnectMemberInstancesClient, "rest"), + ], +) +def test_accelerator_interconnect_member_instances_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_accelerator_interconnect_member_instances_client_get_transport_class(): + transport = AcceleratorInterconnectMemberInstancesClient.get_transport_class() + available_transports = [ + transports.AcceleratorInterconnectMemberInstancesRestTransport, + ] + assert transport in available_transports + + transport = AcceleratorInterconnectMemberInstancesClient.get_transport_class("rest") + assert transport == transports.AcceleratorInterconnectMemberInstancesRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + ( + AcceleratorInterconnectMemberInstancesClient, + transports.AcceleratorInterconnectMemberInstancesRestTransport, + "rest", + ), + ], +) +@mock.patch.object( + AcceleratorInterconnectMemberInstancesClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(AcceleratorInterconnectMemberInstancesClient), +) +def test_accelerator_interconnect_member_instances_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( + AcceleratorInterconnectMemberInstancesClient, "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( + AcceleratorInterconnectMemberInstancesClient, "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", + [ + ( + AcceleratorInterconnectMemberInstancesClient, + transports.AcceleratorInterconnectMemberInstancesRestTransport, + "rest", + "true", + ), + ( + AcceleratorInterconnectMemberInstancesClient, + transports.AcceleratorInterconnectMemberInstancesRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + AcceleratorInterconnectMemberInstancesClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(AcceleratorInterconnectMemberInstancesClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_accelerator_interconnect_member_instances_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", [AcceleratorInterconnectMemberInstancesClient]) +@mock.patch.object( + AcceleratorInterconnectMemberInstancesClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(AcceleratorInterconnectMemberInstancesClient), +) +def test_accelerator_interconnect_member_instances_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [AcceleratorInterconnectMemberInstancesClient]) +@mock.patch.object( + AcceleratorInterconnectMemberInstancesClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(AcceleratorInterconnectMemberInstancesClient), +) +def test_accelerator_interconnect_member_instances_client_client_api_endpoint( + client_class, +): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = AcceleratorInterconnectMemberInstancesClient._DEFAULT_UNIVERSE + default_endpoint = ( + AcceleratorInterconnectMemberInstancesClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + ) + mock_universe = "bar.com" + mock_endpoint = ( + AcceleratorInterconnectMemberInstancesClient._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", + [ + ( + AcceleratorInterconnectMemberInstancesClient, + transports.AcceleratorInterconnectMemberInstancesRestTransport, + "rest", + ), + ], +) +def test_accelerator_interconnect_member_instances_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", + [ + ( + AcceleratorInterconnectMemberInstancesClient, + transports.AcceleratorInterconnectMemberInstancesRestTransport, + "rest", + None, + ), + ], +) +def test_accelerator_interconnect_member_instances_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_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 = AcceleratorInterconnectMemberInstancesClient( + 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.ListAcceleratorInterconnectMemberInstancesRequest, +): + transport_class = transports.AcceleratorInterconnectMemberInstancesRestTransport + + request_init = {} + request_init["accelerator_interconnect"] = "" + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["acceleratorInterconnect"] = "accelerator_interconnect_value" + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "acceleratorInterconnect" in jsonified_request + assert ( + jsonified_request["acceleratorInterconnect"] == "accelerator_interconnect_value" + ) + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectMemberInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.AcceleratorInterconnectMemberInstancesListResponse() + # 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.AcceleratorInterconnectMemberInstancesListResponse.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = AcceleratorInterconnectMemberInstancesClient( + 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.AcceleratorInterconnectMemberInstancesListResponse() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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.AcceleratorInterconnectMemberInstancesListResponse.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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}/memberInstances" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectMemberInstancesClient( + 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.ListAcceleratorInterconnectMemberInstancesRequest(), + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = AcceleratorInterconnectMemberInstancesClient( + 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.AcceleratorInterconnectMemberInstancesListResponse( + items=[ + compute.AcceleratorInterconnectMemberInstance(), + compute.AcceleratorInterconnectMemberInstance(), + compute.AcceleratorInterconnectMemberInstance(), + ], + next_page_token="abc", + ), + compute.AcceleratorInterconnectMemberInstancesListResponse( + items=[], + next_page_token="def", + ), + compute.AcceleratorInterconnectMemberInstancesListResponse( + items=[ + compute.AcceleratorInterconnectMemberInstance(), + ], + next_page_token="ghi", + ), + compute.AcceleratorInterconnectMemberInstancesListResponse( + items=[ + compute.AcceleratorInterconnectMemberInstance(), + compute.AcceleratorInterconnectMemberInstance(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + compute.AcceleratorInterconnectMemberInstancesListResponse.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", + "accelerator_interconnect": "sample3", + } + + pager = client.list(request=sample_request) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all( + isinstance(i, compute.AcceleratorInterconnectMemberInstance) + 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_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.AcceleratorInterconnectMemberInstancesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = AcceleratorInterconnectMemberInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.AcceleratorInterconnectMemberInstancesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = AcceleratorInterconnectMemberInstancesClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.AcceleratorInterconnectMemberInstancesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = AcceleratorInterconnectMemberInstancesClient( + 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 = AcceleratorInterconnectMemberInstancesClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.AcceleratorInterconnectMemberInstancesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = AcceleratorInterconnectMemberInstancesClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.AcceleratorInterconnectMemberInstancesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = AcceleratorInterconnectMemberInstancesClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.AcceleratorInterconnectMemberInstancesRestTransport, + ], +) +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 = AcceleratorInterconnectMemberInstancesClient.get_transport_class( + "rest" + )(credentials=ga_credentials.AnonymousCredentials()) + assert transport.kind == "rest" + + +def test_list_rest_bad_request( + request_type=compute.ListAcceleratorInterconnectMemberInstancesRequest, +): + client = AcceleratorInterconnectMemberInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "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(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListAcceleratorInterconnectMemberInstancesRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = AcceleratorInterconnectMemberInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "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.AcceleratorInterconnectMemberInstancesListResponse( + next_page_token="next_page_token_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.AcceleratorInterconnectMemberInstancesListResponse.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.next_page_token == "next_page_token_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_rest_interceptors(null_interceptor): + transport = transports.AcceleratorInterconnectMemberInstancesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.AcceleratorInterconnectMemberInstancesRestInterceptor(), + ) + client = AcceleratorInterconnectMemberInstancesClient(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.AcceleratorInterconnectMemberInstancesRestInterceptor, + "post_list", + ) as post, + mock.patch.object( + transports.AcceleratorInterconnectMemberInstancesRestInterceptor, + "post_list_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.AcceleratorInterconnectMemberInstancesRestInterceptor, "pre_list" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListAcceleratorInterconnectMemberInstancesRequest.pb( + compute.ListAcceleratorInterconnectMemberInstancesRequest() + ) + 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.AcceleratorInterconnectMemberInstancesListResponse.to_json( + compute.AcceleratorInterconnectMemberInstancesListResponse() + ) + ) + req.return_value.content = return_value + + request = compute.ListAcceleratorInterconnectMemberInstancesRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.AcceleratorInterconnectMemberInstancesListResponse() + post_with_metadata.return_value = ( + compute.AcceleratorInterconnectMemberInstancesListResponse(), + 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_initialize_client_w_rest(): + client = AcceleratorInterconnectMemberInstancesClient( + 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_list_empty_call_rest(): + client = AcceleratorInterconnectMemberInstancesClient( + 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.ListAcceleratorInterconnectMemberInstancesRequest() + assert args[0] == request_msg + + +def test_accelerator_interconnect_member_instances_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.AcceleratorInterconnectMemberInstancesTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_accelerator_interconnect_member_instances_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.accelerator_interconnect_member_instances.transports.AcceleratorInterconnectMemberInstancesTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.AcceleratorInterconnectMemberInstancesTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ("list",) + 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_accelerator_interconnect_member_instances_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_v1.services.accelerator_interconnect_member_instances.transports.AcceleratorInterconnectMemberInstancesTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.AcceleratorInterconnectMemberInstancesTransport( + 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.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id="octopus", + ) + + +def test_accelerator_interconnect_member_instances_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_v1.services.accelerator_interconnect_member_instances.transports.AcceleratorInterconnectMemberInstancesTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.AcceleratorInterconnectMemberInstancesTransport() + adc.assert_called_once() + + +def test_accelerator_interconnect_member_instances_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) + AcceleratorInterconnectMemberInstancesClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id=None, + ) + + +def test_accelerator_interconnect_member_instances_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.AcceleratorInterconnectMemberInstancesRestTransport( + 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_accelerator_interconnect_member_instances_host_no_port(transport_name): + client = AcceleratorInterconnectMemberInstancesClient( + 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_accelerator_interconnect_member_instances_host_with_port(transport_name): + client = AcceleratorInterconnectMemberInstancesClient( + 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_accelerator_interconnect_member_instances_client_transport_session_collision( + transport_name, +): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = AcceleratorInterconnectMemberInstancesClient( + credentials=creds1, + transport=transport_name, + ) + client2 = AcceleratorInterconnectMemberInstancesClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = AcceleratorInterconnectMemberInstancesClient.common_billing_account_path( + billing_account + ) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = AcceleratorInterconnectMemberInstancesClient.common_billing_account_path( + **expected + ) + + # Check that the path construction is reversible. + actual = ( + AcceleratorInterconnectMemberInstancesClient.parse_common_billing_account_path( + path + ) + ) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = AcceleratorInterconnectMemberInstancesClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = AcceleratorInterconnectMemberInstancesClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectMemberInstancesClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = AcceleratorInterconnectMemberInstancesClient.common_organization_path( + organization + ) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = AcceleratorInterconnectMemberInstancesClient.common_organization_path( + **expected + ) + + # Check that the path construction is reversible. + actual = ( + AcceleratorInterconnectMemberInstancesClient.parse_common_organization_path( + path + ) + ) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = AcceleratorInterconnectMemberInstancesClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = AcceleratorInterconnectMemberInstancesClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectMemberInstancesClient.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 = AcceleratorInterconnectMemberInstancesClient.common_location_path( + project, location + ) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = AcceleratorInterconnectMemberInstancesClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectMemberInstancesClient.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.AcceleratorInterconnectMemberInstancesTransport, + "_prep_wrapped_messages", + ) as prep: + client = AcceleratorInterconnectMemberInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.AcceleratorInterconnectMemberInstancesTransport, + "_prep_wrapped_messages", + ) as prep: + transport_class = ( + AcceleratorInterconnectMemberInstancesClient.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 = AcceleratorInterconnectMemberInstancesClient( + 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 = AcceleratorInterconnectMemberInstancesClient( + 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", + [ + ( + AcceleratorInterconnectMemberInstancesClient, + transports.AcceleratorInterconnectMemberInstancesRestTransport, + ), + ], +) +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/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnects.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnects.py new file mode 100644 index 000000000000..4711e576f863 --- /dev/null +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_interconnects.py @@ -0,0 +1,4148 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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_v1.services.accelerator_interconnects import ( + AcceleratorInterconnectsClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert AcceleratorInterconnectsClient._get_client_cert_source(None, False) is None + assert ( + AcceleratorInterconnectsClient._get_client_cert_source( + mock_provided_cert_source, False + ) + is None + ) + assert ( + AcceleratorInterconnectsClient._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 ( + AcceleratorInterconnectsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + AcceleratorInterconnectsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.AcceleratorInterconnect() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AcceleratorInterconnectsList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_query_formability_api_version_header(transport_name): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.query_formability), "__call__" + ) as call: + call.return_value = compute.QueryFormabilityResponse() + client.query_formability() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = AcceleratorInterconnectsClient(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 = AcceleratorInterconnectsClient(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", + [ + (AcceleratorInterconnectsClient, "rest"), + ], +) +def test_accelerator_interconnects_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.AcceleratorInterconnectsRestTransport, "rest"), + ], +) +def test_accelerator_interconnects_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", + [ + (AcceleratorInterconnectsClient, "rest"), + ], +) +def test_accelerator_interconnects_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_accelerator_interconnects_client_get_transport_class(): + transport = AcceleratorInterconnectsClient.get_transport_class() + available_transports = [ + transports.AcceleratorInterconnectsRestTransport, + ] + assert transport in available_transports + + transport = AcceleratorInterconnectsClient.get_transport_class("rest") + assert transport == transports.AcceleratorInterconnectsRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + ( + AcceleratorInterconnectsClient, + transports.AcceleratorInterconnectsRestTransport, + "rest", + ), + ], +) +@mock.patch.object( + AcceleratorInterconnectsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(AcceleratorInterconnectsClient), +) +def test_accelerator_interconnects_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( + AcceleratorInterconnectsClient, "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( + AcceleratorInterconnectsClient, "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", + [ + ( + AcceleratorInterconnectsClient, + transports.AcceleratorInterconnectsRestTransport, + "rest", + "true", + ), + ( + AcceleratorInterconnectsClient, + transports.AcceleratorInterconnectsRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + AcceleratorInterconnectsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(AcceleratorInterconnectsClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_accelerator_interconnects_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", [AcceleratorInterconnectsClient]) +@mock.patch.object( + AcceleratorInterconnectsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(AcceleratorInterconnectsClient), +) +def test_accelerator_interconnects_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [AcceleratorInterconnectsClient]) +@mock.patch.object( + AcceleratorInterconnectsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(AcceleratorInterconnectsClient), +) +def test_accelerator_interconnects_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = AcceleratorInterconnectsClient._DEFAULT_UNIVERSE + default_endpoint = AcceleratorInterconnectsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = AcceleratorInterconnectsClient._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", + [ + ( + AcceleratorInterconnectsClient, + transports.AcceleratorInterconnectsRestTransport, + "rest", + ), + ], +) +def test_accelerator_interconnects_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", + [ + ( + AcceleratorInterconnectsClient, + transports.AcceleratorInterconnectsRestTransport, + "rest", + None, + ), + ], +) +def test_accelerator_interconnects_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 = AcceleratorInterconnectsClient( + 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.DeleteAcceleratorInterconnectRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + request_init["accelerator_interconnect"] = "" + 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 + + default_values = getattr( + transport_class._BaseDelete, + "_BaseDelete__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["acceleratorInterconnect"] = "accelerator_interconnect_value" + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "acceleratorInterconnect" in jsonified_request + assert ( + jsonified_request["acceleratorInterconnect"] == "accelerator_interconnect_value" + ) + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_delete_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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", + "accelerator_interconnect": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}" + % client.transport._host, + args[1], + ) + + +def test_delete_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.DeleteAcceleratorInterconnectRequest(), + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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 = AcceleratorInterconnectsClient( + 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.DeleteAcceleratorInterconnectRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + request_init["accelerator_interconnect"] = "" + 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 + + default_values = getattr( + transport_class._BaseDelete, + "_BaseDelete__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["acceleratorInterconnect"] = "accelerator_interconnect_value" + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "acceleratorInterconnect" in jsonified_request + assert ( + jsonified_request["acceleratorInterconnect"] == "accelerator_interconnect_value" + ) + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_delete_unary_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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", + "accelerator_interconnect": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}" + % client.transport._host, + args[1], + ) + + +def test_delete_unary_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.DeleteAcceleratorInterconnectRequest(), + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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 = AcceleratorInterconnectsClient( + 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.GetAcceleratorInterconnectRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + request_init["accelerator_interconnect"] = "" + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["acceleratorInterconnect"] = "accelerator_interconnect_value" + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # verify required fields with non-default values are left alone + assert "acceleratorInterconnect" in jsonified_request + assert ( + jsonified_request["acceleratorInterconnect"] == "accelerator_interconnect_value" + ) + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.AcceleratorInterconnect() + # 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.AcceleratorInterconnect.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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.AcceleratorInterconnect() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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.AcceleratorInterconnect.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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects/{accelerator_interconnect}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.GetAcceleratorInterconnectRequest(), + project="project_value", + zone="zone_value", + accelerator_interconnect="accelerator_interconnect_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 = AcceleratorInterconnectsClient( + 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.InsertAcceleratorInterconnectRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseInsert, + "_BaseInsert__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_insert_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + accelerator_interconnects_insert_request_resource=compute.AcceleratorInterconnectsInsertRequest( + resource=compute.AcceleratorInterconnect( + accelerator_topology="accelerator_topology_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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects" + % client.transport._host, + args[1], + ) + + +def test_insert_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.InsertAcceleratorInterconnectRequest(), + project="project_value", + zone="zone_value", + accelerator_interconnects_insert_request_resource=compute.AcceleratorInterconnectsInsertRequest( + resource=compute.AcceleratorInterconnect( + accelerator_topology="accelerator_topology_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 = AcceleratorInterconnectsClient( + 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.InsertAcceleratorInterconnectRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseInsert, + "_BaseInsert__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_insert_unary_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + accelerator_interconnects_insert_request_resource=compute.AcceleratorInterconnectsInsertRequest( + resource=compute.AcceleratorInterconnect( + accelerator_topology="accelerator_topology_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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects" + % client.transport._host, + args[1], + ) + + +def test_insert_unary_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.InsertAcceleratorInterconnectRequest(), + project="project_value", + zone="zone_value", + accelerator_interconnects_insert_request_resource=compute.AcceleratorInterconnectsInsertRequest( + resource=compute.AcceleratorInterconnect( + accelerator_topology="accelerator_topology_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 = AcceleratorInterconnectsClient( + 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.ListAcceleratorInterconnectsRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.AcceleratorInterconnectsList() + # 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.AcceleratorInterconnectsList.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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.AcceleratorInterconnectsList() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "zone": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_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.AcceleratorInterconnectsList.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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.ListAcceleratorInterconnectsRequest(), + project="project_value", + zone="zone_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.AcceleratorInterconnectsList( + items=[ + compute.AcceleratorInterconnect(), + compute.AcceleratorInterconnect(), + compute.AcceleratorInterconnect(), + ], + next_page_token="abc", + ), + compute.AcceleratorInterconnectsList( + items=[], + next_page_token="def", + ), + compute.AcceleratorInterconnectsList( + items=[ + compute.AcceleratorInterconnect(), + ], + next_page_token="ghi", + ), + compute.AcceleratorInterconnectsList( + items=[ + compute.AcceleratorInterconnect(), + compute.AcceleratorInterconnect(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + compute.AcceleratorInterconnectsList.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.AcceleratorInterconnect) 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_query_formability_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 = AcceleratorInterconnectsClient( + 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.query_formability 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.query_formability] = ( + mock_rpc + ) + + request = {} + client.query_formability(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.query_formability(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_query_formability_rest_required_fields( + request_type=compute.QueryFormabilityAcceleratorInterconnectsRequest, +): + transport_class = transports.AcceleratorInterconnectsRestTransport + + request_init = {} + 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 + + default_values = getattr( + transport_class._BaseQueryFormability, + "_BaseQueryFormability__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + jsonified_request["zone"] = "zone_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "zone" in jsonified_request + assert jsonified_request["zone"] == "zone_value" + + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.QueryFormabilityResponse() + # 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.QueryFormabilityResponse.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.query_formability(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_query_formability_rest_flattened(): + client = AcceleratorInterconnectsClient( + 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.QueryFormabilityResponse() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "zone": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + zone="zone_value", + query_formability_request_resource=compute.QueryFormabilityRequest( + subblocks=["subblocks_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.QueryFormabilityResponse.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.query_formability(**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/v1/projects/{project}/zones/{zone}/acceleratorInterconnects:queryFormability" + % client.transport._host, + args[1], + ) + + +def test_query_formability_rest_flattened_error(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.query_formability( + compute.QueryFormabilityAcceleratorInterconnectsRequest(), + project="project_value", + zone="zone_value", + query_formability_request_resource=compute.QueryFormabilityRequest( + subblocks=["subblocks_value"] + ), + ) + + +def test_query_formability_rest_pager(transport: str = "rest"): + client = AcceleratorInterconnectsClient( + 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.QueryFormabilityResponse( + items=[ + compute.PartitionFormability(), + compute.PartitionFormability(), + compute.PartitionFormability(), + ], + next_page_token="abc", + ), + compute.QueryFormabilityResponse( + items=[], + next_page_token="def", + ), + compute.QueryFormabilityResponse( + items=[ + compute.PartitionFormability(), + ], + next_page_token="ghi", + ), + compute.QueryFormabilityResponse( + items=[ + compute.PartitionFormability(), + compute.PartitionFormability(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.QueryFormabilityResponse.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"} + sample_request["query_formability_request_resource"] = ( + compute.QueryFormabilityRequest(subblocks=["subblocks_value"]) + ) + + pager = client.query_formability(request=sample_request) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.PartitionFormability) for i in results) + + pages = list(client.query_formability(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = AcceleratorInterconnectsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = AcceleratorInterconnectsClient( + 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 = AcceleratorInterconnectsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = AcceleratorInterconnectsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = AcceleratorInterconnectsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.AcceleratorInterconnectsRestTransport, + ], +) +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 = AcceleratorInterconnectsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_delete_rest_bad_request( + request_type=compute.DeleteAcceleratorInterconnectRequest, +): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "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.DeleteAcceleratorInterconnectRequest, + dict, + ], +) +def test_delete_rest_call_success(request_type): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "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.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.AcceleratorInterconnectsRestInterceptor(), + ) + client = AcceleratorInterconnectsClient(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.AcceleratorInterconnectsRestInterceptor, "post_delete" + ) as post, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, + "post_delete_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, "pre_delete" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.DeleteAcceleratorInterconnectRequest.pb( + compute.DeleteAcceleratorInterconnectRequest() + ) + 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.DeleteAcceleratorInterconnectRequest() + 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.GetAcceleratorInterconnectRequest): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "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(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetAcceleratorInterconnectRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "zone": "sample2", + "accelerator_interconnect": "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.AcceleratorInterconnect( + accelerator_topology="accelerator_topology_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + id=205, + name="name_value", + reactivation_mode="reactivation_mode_value", + self_link="self_link_value", + self_link_with_id="self_link_with_id_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.AcceleratorInterconnect.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.AcceleratorInterconnect) + assert response.accelerator_topology == "accelerator_topology_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.id == 205 + assert response.name == "name_value" + assert response.reactivation_mode == "reactivation_mode_value" + assert response.self_link == "self_link_value" + assert response.self_link_with_id == "self_link_with_id_value" + assert response.zone == "zone_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.AcceleratorInterconnectsRestInterceptor(), + ) + client = AcceleratorInterconnectsClient(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.AcceleratorInterconnectsRestInterceptor, "post_get" + ) as post, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, "pre_get" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetAcceleratorInterconnectRequest.pb( + compute.GetAcceleratorInterconnectRequest() + ) + 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.AcceleratorInterconnect.to_json( + compute.AcceleratorInterconnect() + ) + req.return_value.content = return_value + + request = compute.GetAcceleratorInterconnectRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.AcceleratorInterconnect() + post_with_metadata.return_value = compute.AcceleratorInterconnect(), 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_insert_rest_bad_request( + request_type=compute.InsertAcceleratorInterconnectRequest, +): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "zone": "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.insert(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.InsertAcceleratorInterconnectRequest, + dict, + ], +) +def test_insert_rest_call_success(request_type): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "zone": "sample2"} + request_init["accelerator_interconnects_insert_request_resource"] = { + "resource": { + "accelerator_topology": "accelerator_topology_value", + "annotations": {}, + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "id": 205, + "labels": {}, + "name": "name_value", + "params": { + "capacity_pool": { + "partition_ids": ["partition_ids_value1", "partition_ids_value2"], + "resources": ["resources_value1", "resources_value2"], + } + }, + "reactivation_mode": "reactivation_mode_value", + "self_link": "self_link_value", + "self_link_with_id": "self_link_with_id_value", + "status": { + "accelerator_type": "accelerator_type_value", + "state": "state_value", + "state_details": { + "error": { + "errors": [ + { + "code": "code_value", + "error_details": [ + { + "error_info": { + "domain": "domain_value", + "metadatas": {}, + "reason": "reason_value", + }, + "help_": { + "links": [ + { + "description": "description_value", + "url": "url_value", + } + ] + }, + "localized_message": { + "locale": "locale_value", + "message": "message_value", + }, + "quota_info": { + "dimensions": {}, + "future_limit": 0.1305, + "limit": 0.543, + "limit_name": "limit_name_value", + "metric_name": "metric_name_value", + "rollout_status": "rollout_status_value", + }, + } + ], + "location": "location_value", + "message": "message_value", + } + ] + }, + "timestamp": "timestamp_value", + }, + }, + "zone": "zone_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.InsertAcceleratorInterconnectRequest.meta.fields[ + "accelerator_interconnects_insert_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[ + "accelerator_interconnects_insert_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[ + "accelerator_interconnects_insert_request_resource" + ][field] + ), + ): + del request_init[ + "accelerator_interconnects_insert_request_resource" + ][field][i][subfield] + else: + del request_init["accelerator_interconnects_insert_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.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.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.AcceleratorInterconnectsRestInterceptor(), + ) + client = AcceleratorInterconnectsClient(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.AcceleratorInterconnectsRestInterceptor, "post_insert" + ) as post, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, + "post_insert_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, "pre_insert" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.InsertAcceleratorInterconnectRequest.pb( + compute.InsertAcceleratorInterconnectRequest() + ) + 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.InsertAcceleratorInterconnectRequest() + 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.ListAcceleratorInterconnectsRequest, +): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "zone": "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.list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListAcceleratorInterconnectsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "zone": "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.AcceleratorInterconnectsList( + next_page_token="next_page_token_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.AcceleratorInterconnectsList.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.next_page_token == "next_page_token_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_rest_interceptors(null_interceptor): + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.AcceleratorInterconnectsRestInterceptor(), + ) + client = AcceleratorInterconnectsClient(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.AcceleratorInterconnectsRestInterceptor, "post_list" + ) as post, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, + "post_list_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, "pre_list" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListAcceleratorInterconnectsRequest.pb( + compute.ListAcceleratorInterconnectsRequest() + ) + 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.AcceleratorInterconnectsList.to_json( + compute.AcceleratorInterconnectsList() + ) + req.return_value.content = return_value + + request = compute.ListAcceleratorInterconnectsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.AcceleratorInterconnectsList() + post_with_metadata.return_value = ( + compute.AcceleratorInterconnectsList(), + 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_query_formability_rest_bad_request( + request_type=compute.QueryFormabilityAcceleratorInterconnectsRequest, +): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "zone": "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.query_formability(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.QueryFormabilityAcceleratorInterconnectsRequest, + dict, + ], +) +def test_query_formability_rest_call_success(request_type): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "zone": "sample2"} + request_init["query_formability_request_resource"] = { + "subblocks": ["subblocks_value1", "subblocks_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.QueryFormabilityAcceleratorInterconnectsRequest.meta.fields[ + "query_formability_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[ + "query_formability_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["query_formability_request_resource"][field]) + ): + del request_init["query_formability_request_resource"][field][i][ + subfield + ] + else: + del request_init["query_formability_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.QueryFormabilityResponse( + next_page_token="next_page_token_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.QueryFormabilityResponse.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.query_formability(request) + + # Establish that the response is the type that we expect. + assert isinstance(response, pagers.QueryFormabilityPager) + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_query_formability_rest_interceptors(null_interceptor): + transport = transports.AcceleratorInterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.AcceleratorInterconnectsRestInterceptor(), + ) + client = AcceleratorInterconnectsClient(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.AcceleratorInterconnectsRestInterceptor, "post_query_formability" + ) as post, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, + "post_query_formability_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.AcceleratorInterconnectsRestInterceptor, "pre_query_formability" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.QueryFormabilityAcceleratorInterconnectsRequest.pb( + compute.QueryFormabilityAcceleratorInterconnectsRequest() + ) + 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.QueryFormabilityResponse.to_json( + compute.QueryFormabilityResponse() + ) + req.return_value.content = return_value + + request = compute.QueryFormabilityAcceleratorInterconnectsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.QueryFormabilityResponse() + post_with_metadata.return_value = compute.QueryFormabilityResponse(), metadata + + client.query_formability( + 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 = AcceleratorInterconnectsClient( + 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 = AcceleratorInterconnectsClient( + 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.DeleteAcceleratorInterconnectRequest() + 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 = AcceleratorInterconnectsClient( + 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.GetAcceleratorInterconnectRequest() + 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 = AcceleratorInterconnectsClient( + 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.InsertAcceleratorInterconnectRequest() + 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 = AcceleratorInterconnectsClient( + 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.ListAcceleratorInterconnectsRequest() + 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_query_formability_empty_call_rest(): + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.query_formability), "__call__" + ) as call: + client.query_formability(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.QueryFormabilityAcceleratorInterconnectsRequest() + assert args[0] == request_msg + + +def test_accelerator_interconnects_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.AcceleratorInterconnectsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_accelerator_interconnects_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.accelerator_interconnects.transports.AcceleratorInterconnectsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.AcceleratorInterconnectsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "delete", + "get", + "insert", + "list", + "query_formability", + ) + 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_accelerator_interconnects_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_v1.services.accelerator_interconnects.transports.AcceleratorInterconnectsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.AcceleratorInterconnectsTransport( + 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_accelerator_interconnects_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_v1.services.accelerator_interconnects.transports.AcceleratorInterconnectsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.AcceleratorInterconnectsTransport() + adc.assert_called_once() + + +def test_accelerator_interconnects_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) + AcceleratorInterconnectsClient() + 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_accelerator_interconnects_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.AcceleratorInterconnectsRestTransport( + 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_accelerator_interconnects_host_no_port(transport_name): + client = AcceleratorInterconnectsClient( + 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_accelerator_interconnects_host_with_port(transport_name): + client = AcceleratorInterconnectsClient( + 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_accelerator_interconnects_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = AcceleratorInterconnectsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = AcceleratorInterconnectsClient( + 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.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.query_formability._session + session2 = client2.transport.query_formability._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = AcceleratorInterconnectsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = AcceleratorInterconnectsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = AcceleratorInterconnectsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = AcceleratorInterconnectsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = AcceleratorInterconnectsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = AcceleratorInterconnectsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = AcceleratorInterconnectsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = AcceleratorInterconnectsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectsClient.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 = AcceleratorInterconnectsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = AcceleratorInterconnectsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = AcceleratorInterconnectsClient.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.AcceleratorInterconnectsTransport, "_prep_wrapped_messages" + ) as prep: + client = AcceleratorInterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.AcceleratorInterconnectsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = AcceleratorInterconnectsClient.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 = AcceleratorInterconnectsClient( + 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 = AcceleratorInterconnectsClient( + 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", + [ + ( + AcceleratorInterconnectsClient, + transports.AcceleratorInterconnectsRestTransport, + ), + ], +) +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/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py index 55f1ba201753..c7080b18e0df 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_accelerator_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = AcceleratorTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.AcceleratorTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AcceleratorTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.AcceleratorType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AcceleratorTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AcceleratorTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -988,7 +1097,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1430,7 +1538,6 @@ def test_list_rest_required_fields(request_type=compute.ListAcceleratorTypesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py index e7c901935edb..b44692a8f551 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_addresses.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.AddressAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Address() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AddressList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = AddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1243,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2150,7 +2425,6 @@ def test_list_rest_required_fields(request_type=compute.ListAddressesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py index 03a997a86080..3a58fc2547e2 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_advice.py @@ -55,6 +55,14 @@ from google.cloud.compute_v1.services.advice import AdviceClient, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,109 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_calendar_mode_api_version_header(transport_name): + client = AdviceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.calendar_mode), "__call__" + ) as call: + call.return_value = compute.CalendarModeAdviceResponse() + client.calendar_mode() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_capacity_api_version_header(transport_name): + client = AdviceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.capacity), "__call__") as call: + call.return_value = compute.CapacityAdviceResponse() + client.capacity() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_capacity_history_api_version_header(transport_name): + client = AdviceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.capacity_history), "__call__" + ) as call: + call.return_value = compute.CapacityHistoryResponse() + client.capacity_history() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1395,7 +1506,11 @@ def test_capacity_history_rest_flattened(): region="region_value", capacity_history_request_resource=compute.CapacityHistoryRequest( instance_properties=compute.CapacityHistoryRequestInstanceProperties( - machine_type="machine_type_value" + disks=[ + compute.CapacityHistoryRequestInstancePropertiesAttachedDisk( + type_="type__value" + ) + ] ) ), ) @@ -1439,7 +1554,11 @@ def test_capacity_history_rest_flattened_error(transport: str = "rest"): region="region_value", capacity_history_request_resource=compute.CapacityHistoryRequest( instance_properties=compute.CapacityHistoryRequestInstanceProperties( - machine_type="machine_type_value" + disks=[ + compute.CapacityHistoryRequestInstancePropertiesAttachedDisk( + type_="type__value" + ) + ] ) ), ) @@ -1981,6 +2100,13 @@ def test_capacity_history_rest_call_success(request_type): request_init = {"project": "sample1", "region": "sample2"} request_init["capacity_history_request_resource"] = { "instance_properties": { + "disks": [{"type_": "type__value"}], + "guest_accelerators": [ + { + "accelerator_count": 1805, + "accelerator_type": "accelerator_type_value", + } + ], "machine_type": "machine_type_value", "scheduling": {"provisioning_model": "provisioning_model_value"}, }, diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py index d4101856f737..a98263e61b8f 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_autoscalers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.AutoscalerAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Autoscaler() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AutoscalerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = AutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2167,7 +2442,6 @@ def test_list_rest_required_fields(request_type=compute.ListAutoscalersRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3882,6 +4156,8 @@ def test_insert_rest_call_success(request_type): "cool_down_period_sec": 2112, "cpu_utilization": { "predictive_method": "predictive_method_value", + "utilization_max": 0.1633, + "utilization_min": 0.1631, "utilization_target": 0.19540000000000002, }, "custom_metric_utilizations": [ @@ -4288,6 +4564,8 @@ def test_patch_rest_call_success(request_type): "cool_down_period_sec": 2112, "cpu_utilization": { "predictive_method": "predictive_method_value", + "utilization_max": 0.1633, + "utilization_min": 0.1631, "utilization_target": 0.19540000000000002, }, "custom_metric_utilizations": [ @@ -4775,6 +5053,8 @@ def test_update_rest_call_success(request_type): "cool_down_period_sec": 2112, "cpu_utilization": { "predictive_method": "predictive_method_value", + "utilization_max": 0.1633, + "utilization_min": 0.1631, "utilization_target": 0.19540000000000002, }, "custom_metric_utilizations": [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py index f2ee7a7e144b..27bbba02903f 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_buckets.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,482 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_signed_url_key_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.BackendBucketAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_signed_url_key_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendBucket() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendBucketList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendBucketListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_edge_security_policy_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_edge_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_edge_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = BackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1349,7 +1833,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3095,7 +3578,6 @@ def test_list_rest_required_fields(request_type=compute.ListBackendBucketsReques "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3339,7 +3821,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py index 5cb691ed828c..ae04e72e1fba 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_backend_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,587 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_signed_url_key_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.BackendServiceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_signed_url_key_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_signed_url_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_signed_url_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_security_policies_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_security_policies), "__call__" + ) as call: + call.return_value = ( + compute.GetEffectiveSecurityPoliciesBackendServiceResponse() + ) + client.get_effective_security_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.BackendServiceGroupHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendServiceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendServiceListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_edge_security_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_edge_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_edge_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = BackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1363,7 +1952,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3477,7 +4065,6 @@ def test_list_rest_required_fields(request_type=compute.ListBackendServicesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3721,7 +4308,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py index cffb0cfb301b..8011c60f9460 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_cross_site_networks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.CrossSiteNetwork() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.CrossSiteNetworkList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = CrossSiteNetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1902,7 +2075,6 @@ def test_list_rest_required_fields(request_type=compute.ListCrossSiteNetworksReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py index fe8ecef6d206..50864481e4ba 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disk_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = DiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.DiskTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = DiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.DiskType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = DiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.DiskTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1076,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1404,7 +1512,6 @@ def test_list_rest_required_fields(request_type=compute.ListDiskTypesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py index 00e4f87af3a1..26744d857e52 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_disks.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.disks import DisksClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,690 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_resource_policies_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.DiskAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_set_labels_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.bulk_set_labels), "__call__" + ) as call: + call.return_value = compute.Operation() + client.bulk_set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_snapshot_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_snapshot), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_snapshot() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Disk() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.DiskList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_resource_policies_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_async_replication_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_async_replication_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_group_async_replication_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_group_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_group_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = DisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1356,7 +2048,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3905,7 +4596,6 @@ def test_list_rest_required_fields(request_type=compute.ListDisksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py index a23cc7f7a475..fc849f4f54ab 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_external_vpn_gateways.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ExternalVpnGateway() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ExternalVpnGatewayList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ExternalVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1902,7 +2110,6 @@ def test_list_rest_required_fields(request_type=compute.ListExternalVpnGatewaysR "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py index 1b47ba5de0cd..716ba49fdd06 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewall_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,614 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_clone_rules_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.clone_rules), "__call__") as call: + call.return_value = compute.Operation() + client.clone_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FirewallPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.FirewallPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_associations_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_associations), "__call__" + ) as call: + call.return_value = compute.FirewallPoliciesListAssociationsResponse() + client.list_associations() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = FirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -5905,6 +6521,7 @@ def test_add_association_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -6969,6 +7586,7 @@ def test_get_association_rest_call_success(request_type): display_name="display_name_value", firewall_policy_id="firewall_policy_id_value", name="name_value", + priority=898, short_name="short_name_value", ) @@ -6990,6 +7608,7 @@ def test_get_association_rest_call_success(request_type): assert response.display_name == "display_name_value" assert response.firewall_policy_id == "firewall_policy_id_value" assert response.name == "name_value" + assert response.priority == 898 assert response.short_name == "short_name_value" @@ -7394,6 +8013,7 @@ def test_insert_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -8173,6 +8793,7 @@ def test_patch_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py index ec5443cd4a42..e27690daeffe 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_firewalls.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Firewall() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = FirewallsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1859,7 +2100,6 @@ def test_list_rest_required_fields(request_type=compute.ListFirewallsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py index aa99f5685b8f..81793640ecad 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_forwarding_rules.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,272 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ForwardingRuleAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ForwardingRule() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ForwardingRuleList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_api_version_header(transport_name): + client = ForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_target), "__call__") as call: + call.return_value = compute.Operation() + client.set_target() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -985,7 +1259,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2188,7 +2461,6 @@ def test_list_rest_required_fields(request_type=compute.ListForwardingRulesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py index 09e14079b5cc..3a2d8263471f 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_future_reservations.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.FutureReservationsAggregatedListResponse() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FutureReservation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FutureReservationsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = FutureReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1235,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2617,7 +2857,6 @@ def test_list_rest_required_fields(request_type=compute.ListFutureReservationsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3873,6 +4112,7 @@ def test_get_rest_call_success(request_type): return_value = compute.FutureReservation( auto_created_reservations_delete_time="auto_created_reservations_delete_time_value", auto_delete_auto_created_reservations=True, + colocation_resource="colocation_resource_value", confidential_compute_type="confidential_compute_type_value", creation_timestamp="creation_timestamp_value", deployment_type="deployment_type_value", @@ -3912,6 +4152,7 @@ def test_get_rest_call_success(request_type): == "auto_created_reservations_delete_time_value" ) assert response.auto_delete_auto_created_reservations is True + assert response.colocation_resource == "colocation_resource_value" assert response.confidential_compute_type == "confidential_compute_type_value" assert response.creation_timestamp == "creation_timestamp_value" assert response.deployment_type == "deployment_type_value" @@ -4051,6 +4292,7 @@ def test_insert_rest_call_success(request_type): "auto_created_reservations_delete_time": "auto_created_reservations_delete_time_value", "auto_created_reservations_duration": {"nanos": 543, "seconds": 751}, "auto_delete_auto_created_reservations": True, + "colocation_resource": "colocation_resource_value", "commitment_info": { "commitment_name": "commitment_name_value", "commitment_plan": "commitment_plan_value", @@ -4557,6 +4799,7 @@ def test_update_rest_call_success(request_type): "auto_created_reservations_delete_time": "auto_created_reservations_delete_time_value", "auto_created_reservations_duration": {"nanos": 543, "seconds": 751}, "auto_delete_auto_created_reservations": True, + "colocation_resource": "colocation_resource_value", "commitment_info": { "commitment_name": "commitment_name_value", "commitment_plan": "commitment_plan_value", diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py index c8d5c027c0f5..c14bcb254834 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_addresses.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Address() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.AddressList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = GlobalAddressesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1873,7 +2114,6 @@ def test_list_rest_required_fields(request_type=compute.ListGlobalAddressesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py index 57d1a00cf22d..350674144bf2 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_forwarding_rules.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ForwardingRule() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ForwardingRuleList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_api_version_header(transport_name): + client = GlobalForwardingRulesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_target), "__call__") as call: + call.return_value = compute.Operation() + client.set_target() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1907,7 +2146,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py new file mode 100644 index 000000000000..aac0de0d6679 --- /dev/null +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_frontend_settings_service.py @@ -0,0 +1,2216 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.global_frontend_settings_service import ( + GlobalFrontendSettingsServiceClient, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ( + GlobalFrontendSettingsServiceClient._get_client_cert_source(None, False) is None + ) + assert ( + GlobalFrontendSettingsServiceClient._get_client_cert_source( + mock_provided_cert_source, False + ) + is None + ) + assert ( + GlobalFrontendSettingsServiceClient._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 ( + GlobalFrontendSettingsServiceClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + GlobalFrontendSettingsServiceClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.GlobalFrontendSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.GlobalFrontendSettingsPatchResponse() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = GlobalFrontendSettingsServiceClient(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 = GlobalFrontendSettingsServiceClient(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", + [ + (GlobalFrontendSettingsServiceClient, "rest"), + ], +) +def test_global_frontend_settings_service_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.GlobalFrontendSettingsServiceRestTransport, "rest"), + ], +) +def test_global_frontend_settings_service_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", + [ + (GlobalFrontendSettingsServiceClient, "rest"), + ], +) +def test_global_frontend_settings_service_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_global_frontend_settings_service_client_get_transport_class(): + transport = GlobalFrontendSettingsServiceClient.get_transport_class() + available_transports = [ + transports.GlobalFrontendSettingsServiceRestTransport, + ] + assert transport in available_transports + + transport = GlobalFrontendSettingsServiceClient.get_transport_class("rest") + assert transport == transports.GlobalFrontendSettingsServiceRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + ), + ], +) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(GlobalFrontendSettingsServiceClient), +) +def test_global_frontend_settings_service_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( + GlobalFrontendSettingsServiceClient, "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( + GlobalFrontendSettingsServiceClient, "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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + "true", + ), + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(GlobalFrontendSettingsServiceClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_global_frontend_settings_service_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", [GlobalFrontendSettingsServiceClient]) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(GlobalFrontendSettingsServiceClient), +) +def test_global_frontend_settings_service_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [GlobalFrontendSettingsServiceClient]) +@mock.patch.object( + GlobalFrontendSettingsServiceClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(GlobalFrontendSettingsServiceClient), +) +def test_global_frontend_settings_service_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = GlobalFrontendSettingsServiceClient._DEFAULT_UNIVERSE + default_endpoint = ( + GlobalFrontendSettingsServiceClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + ) + mock_universe = "bar.com" + mock_endpoint = ( + GlobalFrontendSettingsServiceClient._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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + ), + ], +) +def test_global_frontend_settings_service_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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + "rest", + None, + ), + ], +) +def test_global_frontend_settings_service_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_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 = GlobalFrontendSettingsServiceClient( + 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.GetGlobalFrontendSettingRequest): + transport_class = transports.GlobalFrontendSettingsServiceRestTransport + + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.GlobalFrontendSettings() + # 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.GlobalFrontendSettings.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = GlobalFrontendSettingsServiceClient( + 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.GlobalFrontendSettings() + + # 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.GlobalFrontendSettings.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/v1/projects/{project}/global/globalFrontendSettings" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = GlobalFrontendSettingsServiceClient( + 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.GetGlobalFrontendSettingRequest(), + project="project_value", + ) + + +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 = GlobalFrontendSettingsServiceClient( + 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(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + 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_rest_required_fields( + request_type=compute.PatchGlobalFrontendSettingRequest, +): + transport_class = transports.GlobalFrontendSettingsServiceRestTransport + + 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 + + default_values = getattr( + transport_class._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "requestId", + "updateMask", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.GlobalFrontendSettingsPatchResponse() + # 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": "patch", + "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.GlobalFrontendSettingsPatchResponse.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) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_patch_rest_flattened(): + client = GlobalFrontendSettingsServiceClient( + 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.GlobalFrontendSettingsPatchResponse() + + # 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", + global_frontend_settings_resource=compute.GlobalFrontendSettings( + bundle_type="bundle_type_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.GlobalFrontendSettingsPatchResponse.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) + + # 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/v1/projects/{project}/global/globalFrontendSettings" + % client.transport._host, + args[1], + ) + + +def test_patch_rest_flattened_error(transport: str = "rest"): + client = GlobalFrontendSettingsServiceClient( + 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.patch( + compute.PatchGlobalFrontendSettingRequest(), + project="project_value", + global_frontend_settings_resource=compute.GlobalFrontendSettings( + bundle_type="bundle_type_value" + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + 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 = GlobalFrontendSettingsServiceClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = GlobalFrontendSettingsServiceClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = GlobalFrontendSettingsServiceClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.GlobalFrontendSettingsServiceRestTransport, + ], +) +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 = GlobalFrontendSettingsServiceClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_get_rest_bad_request(request_type=compute.GetGlobalFrontendSettingRequest): + client = GlobalFrontendSettingsServiceClient( + 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.get(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetGlobalFrontendSettingRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = GlobalFrontendSettingsServiceClient( + 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.GlobalFrontendSettings( + bundle_type="bundle_type_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + etag="etag_value", + id=205, + name="name_value", + self_link="self_link_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.GlobalFrontendSettings.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.GlobalFrontendSettings) + assert response.bundle_type == "bundle_type_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.etag == "etag_value" + assert response.id == 205 + assert response.name == "name_value" + assert response.self_link == "self_link_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.GlobalFrontendSettingsServiceRestInterceptor(), + ) + client = GlobalFrontendSettingsServiceClient(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.GlobalFrontendSettingsServiceRestInterceptor, "post_get" + ) as post, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, + "post_get_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, "pre_get" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetGlobalFrontendSettingRequest.pb( + compute.GetGlobalFrontendSettingRequest() + ) + 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.GlobalFrontendSettings.to_json( + compute.GlobalFrontendSettings() + ) + req.return_value.content = return_value + + request = compute.GetGlobalFrontendSettingRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.GlobalFrontendSettings() + post_with_metadata.return_value = compute.GlobalFrontendSettings(), 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_patch_rest_bad_request(request_type=compute.PatchGlobalFrontendSettingRequest): + client = GlobalFrontendSettingsServiceClient( + 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.patch(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.PatchGlobalFrontendSettingRequest, + dict, + ], +) +def test_patch_rest_call_success(request_type): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1"} + request_init["global_frontend_settings_resource"] = { + "bundle_type": "bundle_type_value", + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "etag": "etag_value", + "id": 205, + "name": "name_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.PatchGlobalFrontendSettingRequest.meta.fields[ + "global_frontend_settings_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_frontend_settings_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_frontend_settings_resource"][field]) + ): + del request_init["global_frontend_settings_resource"][field][i][ + subfield + ] + else: + del request_init["global_frontend_settings_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.GlobalFrontendSettingsPatchResponse() + + # 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.GlobalFrontendSettingsPatchResponse.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, compute.GlobalFrontendSettingsPatchResponse) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_patch_rest_interceptors(null_interceptor): + transport = transports.GlobalFrontendSettingsServiceRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.GlobalFrontendSettingsServiceRestInterceptor(), + ) + client = GlobalFrontendSettingsServiceClient(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.GlobalFrontendSettingsServiceRestInterceptor, "post_patch" + ) as post, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, + "post_patch_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.GlobalFrontendSettingsServiceRestInterceptor, "pre_patch" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.PatchGlobalFrontendSettingRequest.pb( + compute.PatchGlobalFrontendSettingRequest() + ) + 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.GlobalFrontendSettingsPatchResponse.to_json( + compute.GlobalFrontendSettingsPatchResponse() + ) + req.return_value.content = return_value + + request = compute.PatchGlobalFrontendSettingRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.GlobalFrontendSettingsPatchResponse() + post_with_metadata.return_value = ( + compute.GlobalFrontendSettingsPatchResponse(), + 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_initialize_client_w_rest(): + client = GlobalFrontendSettingsServiceClient( + 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_get_empty_call_rest(): + client = GlobalFrontendSettingsServiceClient( + 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.GetGlobalFrontendSettingRequest() + 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_empty_call_rest(): + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + client.patch(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.PatchGlobalFrontendSettingRequest() + assert args[0] == request_msg + + +def test_global_frontend_settings_service_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.GlobalFrontendSettingsServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_global_frontend_settings_service_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.global_frontend_settings_service.transports.GlobalFrontendSettingsServiceTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.GlobalFrontendSettingsServiceTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "get", + "patch", + ) + 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_global_frontend_settings_service_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_v1.services.global_frontend_settings_service.transports.GlobalFrontendSettingsServiceTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.GlobalFrontendSettingsServiceTransport( + 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_global_frontend_settings_service_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_v1.services.global_frontend_settings_service.transports.GlobalFrontendSettingsServiceTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.GlobalFrontendSettingsServiceTransport() + adc.assert_called_once() + + +def test_global_frontend_settings_service_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) + GlobalFrontendSettingsServiceClient() + 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_global_frontend_settings_service_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.GlobalFrontendSettingsServiceRestTransport( + 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_global_frontend_settings_service_host_no_port(transport_name): + client = GlobalFrontendSettingsServiceClient( + 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_global_frontend_settings_service_host_with_port(transport_name): + client = GlobalFrontendSettingsServiceClient( + 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_global_frontend_settings_service_client_transport_session_collision( + transport_name, +): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = GlobalFrontendSettingsServiceClient( + credentials=creds1, + transport=transport_name, + ) + client2 = GlobalFrontendSettingsServiceClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.patch._session + session2 = client2.transport.patch._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = GlobalFrontendSettingsServiceClient.common_billing_account_path( + billing_account + ) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = GlobalFrontendSettingsServiceClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = GlobalFrontendSettingsServiceClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = GlobalFrontendSettingsServiceClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = GlobalFrontendSettingsServiceClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = GlobalFrontendSettingsServiceClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = GlobalFrontendSettingsServiceClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = GlobalFrontendSettingsServiceClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.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 = GlobalFrontendSettingsServiceClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = GlobalFrontendSettingsServiceClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = GlobalFrontendSettingsServiceClient.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.GlobalFrontendSettingsServiceTransport, "_prep_wrapped_messages" + ) as prep: + client = GlobalFrontendSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.GlobalFrontendSettingsServiceTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = GlobalFrontendSettingsServiceClient.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 = GlobalFrontendSettingsServiceClient( + 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 = GlobalFrontendSettingsServiceClient( + 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", + [ + ( + GlobalFrontendSettingsServiceClient, + transports.GlobalFrontendSettingsServiceRestTransport, + ), + ], +) +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/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py index 9b53beb603c4..45c122e3d146 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_network_endpoint_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_network_endpoints_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.attach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.attach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_network_endpoints_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.detach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.detach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEndpointGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkEndpointGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_network_endpoints_api_version_header(transport_name): + client = GlobalNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_network_endpoints), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupsListNetworkEndpoints() + client.list_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2708,7 +2953,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2959,7 +3203,6 @@ def test_list_network_endpoints_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py index a5962709f882..d29f83eb7be6 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.OperationAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteGlobalOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_wait_api_version_header(transport_name): + client = GlobalOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.wait), "__call__") as call: + call.return_value = compute.Operation() + client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -988,7 +1163,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1586,7 +1760,6 @@ def test_list_rest_required_fields(request_type=compute.ListGlobalOperationsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py index 152843c1aba9..53d77b224a70 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_organization_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,105 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalOrganizationOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteGlobalOrganizationOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalOrganizationOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalOrganizationOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py index d5eb067c339c..baa6198cdd17 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_public_delegated_prefixes.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefix() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefixList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = GlobalPublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1918,7 +2091,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py index b86d81aa7fe5..45fe98034777 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_global_vm_extension_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.VmExtensionPolicyAggregatedListResponse() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.GlobalVmExtensionPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.GlobalVmExtensionPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = GlobalVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1010,7 +1218,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2199,7 +2406,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ha_controllers.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ha_controllers.py new file mode 100644 index 000000000000..3a02bcecb7a6 --- /dev/null +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ha_controllers.py @@ -0,0 +1,5506 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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_v1.services.ha_controllers import ( + HaControllersClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert HaControllersClient._get_client_cert_source(None, False) is None + assert ( + HaControllersClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + HaControllersClient._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 ( + HaControllersClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + HaControllersClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HaControllersAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_failover_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.failover), "__call__") as call: + call.return_value = compute.Operation() + client.failover() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HaController() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HaControllersList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = HaControllersClient(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 = HaControllersClient(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", + [ + (HaControllersClient, "rest"), + ], +) +def test_ha_controllers_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.HaControllersRestTransport, "rest"), + ], +) +def test_ha_controllers_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", + [ + (HaControllersClient, "rest"), + ], +) +def test_ha_controllers_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_ha_controllers_client_get_transport_class(): + transport = HaControllersClient.get_transport_class() + available_transports = [ + transports.HaControllersRestTransport, + ] + assert transport in available_transports + + transport = HaControllersClient.get_transport_class("rest") + assert transport == transports.HaControllersRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (HaControllersClient, transports.HaControllersRestTransport, "rest"), + ], +) +@mock.patch.object( + HaControllersClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(HaControllersClient), +) +def test_ha_controllers_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(HaControllersClient, "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(HaControllersClient, "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", + [ + (HaControllersClient, transports.HaControllersRestTransport, "rest", "true"), + (HaControllersClient, transports.HaControllersRestTransport, "rest", "false"), + ], +) +@mock.patch.object( + HaControllersClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(HaControllersClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_ha_controllers_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", [HaControllersClient]) +@mock.patch.object( + HaControllersClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(HaControllersClient), +) +def test_ha_controllers_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [HaControllersClient]) +@mock.patch.object( + HaControllersClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(HaControllersClient), +) +def test_ha_controllers_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = HaControllersClient._DEFAULT_UNIVERSE + default_endpoint = HaControllersClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = HaControllersClient._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", + [ + (HaControllersClient, transports.HaControllersRestTransport, "rest"), + ], +) +def test_ha_controllers_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", + [ + (HaControllersClient, transports.HaControllersRestTransport, "rest", None), + ], +) +def test_ha_controllers_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_aggregated_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 = HaControllersClient( + 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.aggregated_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.aggregated_list] = mock_rpc + + request = {} + client.aggregated_list(request) + + # Establish that the underlying gRPC stub method was called. + assert mock_rpc.call_count == 1 + + client.aggregated_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_aggregated_list_rest_required_fields( + request_type=compute.AggregatedListHaControllersRequest, +): + transport_class = transports.HaControllersRestTransport + + 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 + + default_values = getattr( + transport_class._BaseAggregatedList, + "_BaseAggregatedList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "includeAllScopes", + "maxResults", + "orderBy", + "pageToken", + "serviceProjectNumber", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.HaControllersAggregatedList() + # 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.HaControllersAggregatedList.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) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_aggregated_list_rest_flattened(): + client = HaControllersClient( + 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.HaControllersAggregatedList() + + # 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.HaControllersAggregatedList.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.aggregated_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/v1/projects/{project}/aggregated/haControllers" + % client.transport._host, + args[1], + ) + + +def test_aggregated_list_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.aggregated_list( + compute.AggregatedListHaControllersRequest(), + project="project_value", + ) + + +def test_aggregated_list_rest_pager(transport: str = "rest"): + client = HaControllersClient( + 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.HaControllersAggregatedList( + items={ + "a": compute.HaControllersScopedList(), + "b": compute.HaControllersScopedList(), + "c": compute.HaControllersScopedList(), + }, + next_page_token="abc", + ), + compute.HaControllersAggregatedList( + items={}, + next_page_token="def", + ), + compute.HaControllersAggregatedList( + items={ + "g": compute.HaControllersScopedList(), + }, + next_page_token="ghi", + ), + compute.HaControllersAggregatedList( + items={ + "h": compute.HaControllersScopedList(), + "i": compute.HaControllersScopedList(), + }, + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple( + compute.HaControllersAggregatedList.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.aggregated_list(request=sample_request) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + assert isinstance(pager.get("a"), compute.HaControllersScopedList) + assert pager.get("h") is None + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, tuple) for i in results) + for result in results: + assert isinstance(result, tuple) + assert tuple(type(t) for t in result) == ( + str, + compute.HaControllersScopedList, + ) + + assert pager.get("a") is None + assert isinstance(pager.get("h"), compute.HaControllersScopedList) + + pages = list(client.aggregated_list(request=sample_request).pages) + for page_, token in zip(pages, ["abc", "def", "ghi", ""]): + assert page_.raw_page.next_page_token == token + + +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 = HaControllersClient( + 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.DeleteHaControllerRequest): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseDelete, + "_BaseDelete__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "force", + "requestId", + ) + ) + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_delete_rest_flattened(): + client = HaControllersClient( + 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", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}" + % client.transport._host, + args[1], + ) + + +def test_delete_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.DeleteHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_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 = HaControllersClient( + 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.DeleteHaControllerRequest, +): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseDelete, + "_BaseDelete__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "force", + "requestId", + ) + ) + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_delete_unary_rest_flattened(): + client = HaControllersClient( + 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", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}" + % client.transport._host, + args[1], + ) + + +def test_delete_unary_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.DeleteHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ) + + +def test_failover_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 = HaControllersClient( + 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.failover 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.failover] = mock_rpc + + request = {} + client.failover(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.failover(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_failover_rest_required_fields( + request_type=compute.FailoverHaControllerRequest, +): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseFailover, + "_BaseFailover__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + 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.failover(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_failover_rest_flattened(): + client = HaControllersClient( + 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", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controllers_failover_request_resource=compute.HaControllersFailoverRequest( + failover_to_zone="failover_to_zone_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.failover(**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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}/failover" + % client.transport._host, + args[1], + ) + + +def test_failover_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.failover( + compute.FailoverHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controllers_failover_request_resource=compute.HaControllersFailoverRequest( + failover_to_zone="failover_to_zone_value" + ), + ) + + +def test_failover_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 = HaControllersClient( + 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.failover 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.failover] = mock_rpc + + request = {} + client.failover_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.failover_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_failover_unary_rest_required_fields( + request_type=compute.FailoverHaControllerRequest, +): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseFailover, + "_BaseFailover__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + 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.failover_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_failover_unary_rest_flattened(): + client = HaControllersClient( + 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", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controllers_failover_request_resource=compute.HaControllersFailoverRequest( + failover_to_zone="failover_to_zone_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.failover_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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}/failover" + % client.transport._host, + args[1], + ) + + +def test_failover_unary_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.failover_unary( + compute.FailoverHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controllers_failover_request_resource=compute.HaControllersFailoverRequest( + failover_to_zone="failover_to_zone_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 = HaControllersClient( + 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.GetHaControllerRequest): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.HaController() + # 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.HaController.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = HaControllersClient( + 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.HaController() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_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.HaController.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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.GetHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_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 = HaControllersClient( + 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.InsertHaControllerRequest): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseInsert, + "_BaseInsert__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # 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" + + client = HaControllersClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_insert_rest_flattened(): + client = HaControllersClient( + 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"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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/v1/projects/{project}/regions/{region}/haControllers" + % client.transport._host, + args[1], + ) + + +def test_insert_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.InsertHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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 = HaControllersClient( + 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.InsertHaControllerRequest, +): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseInsert, + "_BaseInsert__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # 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" + + client = HaControllersClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_insert_unary_rest_flattened(): + client = HaControllersClient( + 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"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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/v1/projects/{project}/regions/{region}/haControllers" + % client.transport._host, + args[1], + ) + + +def test_insert_unary_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.InsertHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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 = HaControllersClient( + 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.ListHaControllersRequest): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # 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" + + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.HaControllersList() + # 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.HaControllersList.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = HaControllersClient( + 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.HaControllersList() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "region": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_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.HaControllersList.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/v1/projects/{project}/regions/{region}/haControllers" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.ListHaControllersRequest(), + project="project_value", + region="region_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = HaControllersClient( + 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.HaControllersList( + items=[ + compute.HaController(), + compute.HaController(), + compute.HaController(), + ], + next_page_token="abc", + ), + compute.HaControllersList( + items=[], + next_page_token="def", + ), + compute.HaControllersList( + items=[ + compute.HaController(), + ], + next_page_token="ghi", + ), + compute.HaControllersList( + items=[ + compute.HaController(), + compute.HaController(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.HaControllersList.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.HaController) 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_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 = HaControllersClient( + 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(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) + + # 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.PatchHaControllerRequest): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "requestId", + "updateMask", + ) + ) + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + 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": "patch", + "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.patch(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_patch_rest_flattened(): + client = HaControllersClient( + 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", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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.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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}" + % client.transport._host, + args[1], + ) + + +def test_patch_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.patch( + compute.PatchHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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 = HaControllersClient( + 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_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.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_unary_rest_required_fields( + request_type=compute.PatchHaControllerRequest, +): + transport_class = transports.HaControllersRestTransport + + request_init = {} + request_init["ha_controller"] = "" + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BasePatch, + "_BasePatch__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["haController"] = "ha_controller_value" + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "requestId", + "updateMask", + ) + ) + + # verify required fields with non-default values are left alone + assert "haController" in jsonified_request + assert jsonified_request["haController"] == "ha_controller_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + assert "region" in jsonified_request + assert jsonified_request["region"] == "region_value" + + client = HaControllersClient( + 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": "patch", + "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.patch_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_patch_unary_rest_flattened(): + client = HaControllersClient( + 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", + "ha_controller": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_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.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/v1/projects/{project}/regions/{region}/haControllers/{ha_controller}" + % client.transport._host, + args[1], + ) + + +def test_patch_unary_rest_flattened_error(transport: str = "rest"): + client = HaControllersClient( + 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.patch_unary( + compute.PatchHaControllerRequest(), + project="project_value", + region="region_value", + ha_controller="ha_controller_value", + ha_controller_resource=compute.HaController( + backend_services=["backend_services_value"] + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = HaControllersClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = HaControllersClient( + 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 = HaControllersClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = HaControllersClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = HaControllersClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.HaControllersRestTransport, + ], +) +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 = HaControllersClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_aggregated_list_rest_bad_request( + request_type=compute.AggregatedListHaControllersRequest, +): + client = HaControllersClient( + 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.AggregatedListHaControllersRequest, + dict, + ], +) +def test_aggregated_list_rest_call_success(request_type): + client = HaControllersClient( + 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.HaControllersAggregatedList( + 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.HaControllersAggregatedList.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.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_aggregated_list_rest_interceptors(null_interceptor): + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_aggregated_list" + ) as post, + mock.patch.object( + transports.HaControllersRestInterceptor, + "post_aggregated_list_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.HaControllersRestInterceptor, "pre_aggregated_list" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AggregatedListHaControllersRequest.pb( + compute.AggregatedListHaControllersRequest() + ) + 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.HaControllersAggregatedList.to_json( + compute.HaControllersAggregatedList() + ) + req.return_value.content = return_value + + request = compute.AggregatedListHaControllersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.HaControllersAggregatedList() + post_with_metadata.return_value = ( + compute.HaControllersAggregatedList(), + 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.DeleteHaControllerRequest): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "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.DeleteHaControllerRequest, + dict, + ], +) +def test_delete_rest_call_success(request_type): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "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.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_delete" + ) as post, + mock.patch.object( + transports.HaControllersRestInterceptor, "post_delete_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.HaControllersRestInterceptor, "pre_delete") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.DeleteHaControllerRequest.pb( + compute.DeleteHaControllerRequest() + ) + 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.DeleteHaControllerRequest() + 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_failover_rest_bad_request(request_type=compute.FailoverHaControllerRequest): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "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.failover(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.FailoverHaControllerRequest, + dict, + ], +) +def test_failover_rest_call_success(request_type): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "sample3", + } + request_init["ha_controllers_failover_request_resource"] = { + "failover_to_zone": "failover_to_zone_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.FailoverHaControllerRequest.meta.fields[ + "ha_controllers_failover_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[ + "ha_controllers_failover_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["ha_controllers_failover_request_resource"][field] + ), + ): + del request_init["ha_controllers_failover_request_resource"][field][ + i + ][subfield] + else: + del request_init["ha_controllers_failover_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.failover(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_failover_rest_interceptors(null_interceptor): + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_failover" + ) as post, + mock.patch.object( + transports.HaControllersRestInterceptor, "post_failover_with_metadata" + ) as post_with_metadata, + mock.patch.object( + transports.HaControllersRestInterceptor, "pre_failover" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.FailoverHaControllerRequest.pb( + compute.FailoverHaControllerRequest() + ) + 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.FailoverHaControllerRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.failover( + 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.GetHaControllerRequest): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "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(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetHaControllerRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "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.HaController( + backend_services=["backend_services_value"], + creation_timestamp="creation_timestamp_value", + description="description_value", + failover_initiation="failover_initiation_value", + id=205, + instance_name="instance_name_value", + kind="kind_value", + name="name_value", + region="region_value", + self_link="self_link_value", + self_link_with_id="self_link_with_id_value", + state="state_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.HaController.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.HaController) + assert response.backend_services == ["backend_services_value"] + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.failover_initiation == "failover_initiation_value" + assert response.id == 205 + assert response.instance_name == "instance_name_value" + assert response.kind == "kind_value" + assert response.name == "name_value" + assert response.region == "region_value" + assert response.self_link == "self_link_value" + assert response.self_link_with_id == "self_link_with_id_value" + assert response.state == "state_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_get") as post, + mock.patch.object( + transports.HaControllersRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.HaControllersRestInterceptor, "pre_get") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetHaControllerRequest.pb(compute.GetHaControllerRequest()) + 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.HaController.to_json(compute.HaController()) + req.return_value.content = return_value + + request = compute.GetHaControllerRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.HaController() + post_with_metadata.return_value = compute.HaController(), 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_insert_rest_bad_request(request_type=compute.InsertHaControllerRequest): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.insert(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.InsertHaControllerRequest, + dict, + ], +) +def test_insert_rest_call_success(request_type): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2"} + request_init["ha_controller_resource"] = { + "backend_services": ["backend_services_value1", "backend_services_value2"], + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "failover_initiation": "failover_initiation_value", + "id": 205, + "instance_name": "instance_name_value", + "kind": "kind_value", + "name": "name_value", + "networking_auto_configuration": { + "internal": { + "ip_address": "ip_address_value", + "ipv6_address": "ipv6_address_value", + "stack_type": "stack_type_value", + } + }, + "region": "region_value", + "self_link": "self_link_value", + "self_link_with_id": "self_link_with_id_value", + "state": "state_value", + "status": { + "failover_progress": { + "failover_complete_timestamp": "failover_complete_timestamp_value", + "failover_duration": "failover_duration_value", + "failover_trigger": "failover_trigger_value", + "failover_trigger_timestamp": "failover_trigger_timestamp_value", + "last_failover_attempt": { + "errors": { + "errors": [ + { + "code": "code_value", + "error_details": [ + { + "error_info": { + "domain": "domain_value", + "metadatas": {}, + "reason": "reason_value", + }, + "help_": { + "links": [ + { + "description": "description_value", + "url": "url_value", + } + ] + }, + "localized_message": { + "locale": "locale_value", + "message": "message_value", + }, + "quota_info": { + "dimensions": {}, + "future_limit": 0.1305, + "limit": 0.543, + "limit_name": "limit_name_value", + "metric_name": "metric_name_value", + "rollout_status": "rollout_status_value", + }, + } + ], + "location": "location_value", + "message": "message_value", + } + ] + }, + "timestamp": "timestamp_value", + }, + }, + "last_failover_info": {}, + "ongoing_failover": True, + "primary_instance": "primary_instance_value", + "primary_zone": "primary_zone_value", + "ready_for_failover": True, + "zone_status": {}, + }, + "zone_configurations": {}, + } + # 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.InsertHaControllerRequest.meta.fields["ha_controller_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[ + "ha_controller_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["ha_controller_resource"][field])): + del request_init["ha_controller_resource"][field][i][subfield] + else: + del request_init["ha_controller_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.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_insert" + ) as post, + mock.patch.object( + transports.HaControllersRestInterceptor, "post_insert_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.HaControllersRestInterceptor, "pre_insert") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.InsertHaControllerRequest.pb( + compute.InsertHaControllerRequest() + ) + 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.InsertHaControllerRequest() + 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.ListHaControllersRequest): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListHaControllersRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.HaControllersList( + etag="etag_value", + id="id_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.HaControllersList.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.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.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_list") as post, + mock.patch.object( + transports.HaControllersRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.HaControllersRestInterceptor, "pre_list") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListHaControllersRequest.pb( + compute.ListHaControllersRequest() + ) + 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.HaControllersList.to_json(compute.HaControllersList()) + req.return_value.content = return_value + + request = compute.ListHaControllersRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.HaControllersList() + post_with_metadata.return_value = compute.HaControllersList(), 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_patch_rest_bad_request(request_type=compute.PatchHaControllerRequest): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "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(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.PatchHaControllerRequest, + dict, + ], +) +def test_patch_rest_call_success(request_type): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "ha_controller": "sample3", + } + request_init["ha_controller_resource"] = { + "backend_services": ["backend_services_value1", "backend_services_value2"], + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "failover_initiation": "failover_initiation_value", + "id": 205, + "instance_name": "instance_name_value", + "kind": "kind_value", + "name": "name_value", + "networking_auto_configuration": { + "internal": { + "ip_address": "ip_address_value", + "ipv6_address": "ipv6_address_value", + "stack_type": "stack_type_value", + } + }, + "region": "region_value", + "self_link": "self_link_value", + "self_link_with_id": "self_link_with_id_value", + "state": "state_value", + "status": { + "failover_progress": { + "failover_complete_timestamp": "failover_complete_timestamp_value", + "failover_duration": "failover_duration_value", + "failover_trigger": "failover_trigger_value", + "failover_trigger_timestamp": "failover_trigger_timestamp_value", + "last_failover_attempt": { + "errors": { + "errors": [ + { + "code": "code_value", + "error_details": [ + { + "error_info": { + "domain": "domain_value", + "metadatas": {}, + "reason": "reason_value", + }, + "help_": { + "links": [ + { + "description": "description_value", + "url": "url_value", + } + ] + }, + "localized_message": { + "locale": "locale_value", + "message": "message_value", + }, + "quota_info": { + "dimensions": {}, + "future_limit": 0.1305, + "limit": 0.543, + "limit_name": "limit_name_value", + "metric_name": "metric_name_value", + "rollout_status": "rollout_status_value", + }, + } + ], + "location": "location_value", + "message": "message_value", + } + ] + }, + "timestamp": "timestamp_value", + }, + }, + "last_failover_info": {}, + "ongoing_failover": True, + "primary_instance": "primary_instance_value", + "primary_zone": "primary_zone_value", + "ready_for_failover": True, + "zone_status": {}, + }, + "zone_configurations": {}, + } + # 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.PatchHaControllerRequest.meta.fields["ha_controller_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[ + "ha_controller_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["ha_controller_resource"][field])): + del request_init["ha_controller_resource"][field][i][subfield] + else: + del request_init["ha_controller_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.HaControllersRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.HaControllersRestInterceptor(), + ) + client = HaControllersClient(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.HaControllersRestInterceptor, "post_patch" + ) as post, + mock.patch.object( + transports.HaControllersRestInterceptor, "post_patch_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.HaControllersRestInterceptor, "pre_patch") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.PatchHaControllerRequest.pb( + compute.PatchHaControllerRequest() + ) + 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.PatchHaControllerRequest() + 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_initialize_client_w_rest(): + client = HaControllersClient( + 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_aggregated_list_empty_call_rest(): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.aggregated_list), "__call__") as call: + client.aggregated_list(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.AggregatedListHaControllersRequest() + 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_unary_empty_call_rest(): + client = HaControllersClient( + 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.DeleteHaControllerRequest() + 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_failover_unary_empty_call_rest(): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.failover), "__call__") as call: + client.failover_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.FailoverHaControllerRequest() + 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 = HaControllersClient( + 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.GetHaControllerRequest() + 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 = HaControllersClient( + 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.InsertHaControllerRequest() + 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 = HaControllersClient( + 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.ListHaControllersRequest() + 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_unary_empty_call_rest(): + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + client.patch_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.PatchHaControllerRequest() + assert args[0] == request_msg + + +def test_ha_controllers_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.HaControllersTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_ha_controllers_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.ha_controllers.transports.HaControllersTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.HaControllersTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "aggregated_list", + "delete", + "failover", + "get", + "insert", + "list", + "patch", + ) + 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_ha_controllers_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_v1.services.ha_controllers.transports.HaControllersTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.HaControllersTransport( + 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_ha_controllers_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_v1.services.ha_controllers.transports.HaControllersTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.HaControllersTransport() + adc.assert_called_once() + + +def test_ha_controllers_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) + HaControllersClient() + 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_ha_controllers_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.HaControllersRestTransport( + 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_ha_controllers_host_no_port(transport_name): + client = HaControllersClient( + 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_ha_controllers_host_with_port(transport_name): + client = HaControllersClient( + 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_ha_controllers_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = HaControllersClient( + credentials=creds1, + transport=transport_name, + ) + client2 = HaControllersClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.aggregated_list._session + session2 = client2.transport.aggregated_list._session + assert session1 != session2 + session1 = client1.transport.delete._session + session2 = client2.transport.delete._session + assert session1 != session2 + session1 = client1.transport.failover._session + session2 = client2.transport.failover._session + assert session1 != session2 + session1 = client1.transport.get._session + session2 = client2.transport.get._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.patch._session + session2 = client2.transport.patch._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = HaControllersClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = HaControllersClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = HaControllersClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = HaControllersClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = HaControllersClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = HaControllersClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = HaControllersClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = HaControllersClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = HaControllersClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = HaControllersClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = HaControllersClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = HaControllersClient.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 = HaControllersClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = HaControllersClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = HaControllersClient.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.HaControllersTransport, "_prep_wrapped_messages" + ) as prep: + client = HaControllersClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.HaControllersTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = HaControllersClient.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 = HaControllersClient( + 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 = HaControllersClient( + 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", + [ + (HaControllersClient, transports.HaControllersRestTransport), + ], +) +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/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py index 94a873e82b09..761f27a0f63e 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_health_checks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthChecksAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthCheck() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthCheckList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = HealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2117,7 +2392,6 @@ def test_list_rest_required_fields(request_type=compute.ListHealthChecksRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py index a91bdec159f1..119cf2d9ca11 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_hosts.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.hosts import HostsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,105 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = HostsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Host() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_version_api_version_header(transport_name): + client = HostsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_version), "__call__") as call: + call.return_value = compute.Operation() + client.get_version() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = HostsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HostsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1557,7 +1664,6 @@ def test_list_rest_required_fields(request_type=compute.ListHostsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py index a991457b736d..c64936ad93da 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_family_views.py @@ -58,6 +58,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -166,6 +174,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ImageFamilyViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ImageFamilyView() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py new file mode 100644 index 000000000000..45bf461ec6dc --- /dev/null +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_image_views.py @@ -0,0 +1,2141 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.image_views import ( + ImageViewsClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ImageViewsClient._get_client_cert_source(None, False) is None + assert ( + ImageViewsClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + ImageViewsClient._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 ( + ImageViewsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + ImageViewsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ImageView() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ImageViewsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = ImageViewsClient(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 = ImageViewsClient(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", + [ + (ImageViewsClient, "rest"), + ], +) +def test_image_views_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.ImageViewsRestTransport, "rest"), + ], +) +def test_image_views_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", + [ + (ImageViewsClient, "rest"), + ], +) +def test_image_views_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_image_views_client_get_transport_class(): + transport = ImageViewsClient.get_transport_class() + available_transports = [ + transports.ImageViewsRestTransport, + ] + assert transport in available_transports + + transport = ImageViewsClient.get_transport_class("rest") + assert transport == transports.ImageViewsRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest"), + ], +) +@mock.patch.object( + ImageViewsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ImageViewsClient), +) +def test_image_views_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(ImageViewsClient, "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(ImageViewsClient, "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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest", "true"), + (ImageViewsClient, transports.ImageViewsRestTransport, "rest", "false"), + ], +) +@mock.patch.object( + ImageViewsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ImageViewsClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_image_views_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", [ImageViewsClient]) +@mock.patch.object( + ImageViewsClient, "DEFAULT_ENDPOINT", modify_default_endpoint(ImageViewsClient) +) +def test_image_views_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [ImageViewsClient]) +@mock.patch.object( + ImageViewsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ImageViewsClient), +) +def test_image_views_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = ImageViewsClient._DEFAULT_UNIVERSE + default_endpoint = ImageViewsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = ImageViewsClient._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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest"), + ], +) +def test_image_views_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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport, "rest", None), + ], +) +def test_image_views_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_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 = ImageViewsClient( + 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.GetImageViewRequest): + transport_class = transports.ImageViewsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + request_init["resource_id"] = "" + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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["resourceId"] = "resource_id_value" + + # 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 "resourceId" in jsonified_request + assert jsonified_request["resourceId"] == "resource_id_value" + + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ImageView() + # 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.ImageView.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = ImageViewsClient( + 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.ImageView() + + # get arguments that satisfy an http rule for this method + sample_request = { + "project": "sample1", + "region": "sample2", + "resource_id": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + resource_id="resource_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.ImageView.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/v1/projects/{project}/regions/{region}/imageViews/{resource_id}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = ImageViewsClient( + 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.GetImageViewRequest(), + project="project_value", + region="region_value", + resource_id="resource_id_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 = ImageViewsClient( + 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.ListImageViewsRequest): + transport_class = transports.ImageViewsRestTransport + + request_init = {} + request_init["project"] = "" + request_init["region"] = "" + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # 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" + + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ImageViewsListResponse() + # 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.ImageViewsListResponse.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = ImageViewsClient( + 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.ImageViewsListResponse() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "region": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_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.ImageViewsListResponse.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/v1/projects/{project}/regions/{region}/imageViews" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = ImageViewsClient( + 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.ListImageViewsRequest(), + project="project_value", + region="region_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = ImageViewsClient( + 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.ImageViewsListResponse( + items=[ + compute.ImageView(), + compute.ImageView(), + compute.ImageView(), + ], + next_page_token="abc", + ), + compute.ImageViewsListResponse( + items=[], + next_page_token="def", + ), + compute.ImageViewsListResponse( + items=[ + compute.ImageView(), + ], + next_page_token="ghi", + ), + compute.ImageViewsListResponse( + items=[ + compute.ImageView(), + compute.ImageView(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.ImageViewsListResponse.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.ImageView) 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_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ImageViewsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ImageViewsClient( + 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 = ImageViewsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ImageViewsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = ImageViewsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ImageViewsRestTransport, + ], +) +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 = ImageViewsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_get_rest_bad_request(request_type=compute.GetImageViewRequest): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "resource_id": "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(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.GetImageViewRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2", "resource_id": "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.ImageView() + + # 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.ImageView.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.ImageView) + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ImageViewsRestInterceptor(), + ) + client = ImageViewsClient(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.ImageViewsRestInterceptor, "post_get") as post, + mock.patch.object( + transports.ImageViewsRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ImageViewsRestInterceptor, "pre_get") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetImageViewRequest.pb(compute.GetImageViewRequest()) + 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.ImageView.to_json(compute.ImageView()) + req.return_value.content = return_value + + request = compute.GetImageViewRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ImageView() + post_with_metadata.return_value = compute.ImageView(), 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_list_rest_bad_request(request_type=compute.ListImageViewsRequest): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.list(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.ListImageViewsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.ImageViewsListResponse( + 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.ImageViewsListResponse.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.ImageViewsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ImageViewsRestInterceptor(), + ) + client = ImageViewsClient(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.ImageViewsRestInterceptor, "post_list") as post, + mock.patch.object( + transports.ImageViewsRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ImageViewsRestInterceptor, "pre_list") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListImageViewsRequest.pb(compute.ListImageViewsRequest()) + 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.ImageViewsListResponse.to_json( + compute.ImageViewsListResponse() + ) + req.return_value.content = return_value + + request = compute.ListImageViewsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ImageViewsListResponse() + post_with_metadata.return_value = compute.ImageViewsListResponse(), 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_initialize_client_w_rest(): + client = ImageViewsClient( + 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_get_empty_call_rest(): + client = ImageViewsClient( + 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.GetImageViewRequest() + 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 = ImageViewsClient( + 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.ListImageViewsRequest() + assert args[0] == request_msg + + +def test_image_views_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.ImageViewsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_image_views_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.image_views.transports.ImageViewsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.ImageViewsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "get", + "list", + ) + 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_image_views_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_v1.services.image_views.transports.ImageViewsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ImageViewsTransport( + 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.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id="octopus", + ) + + +def test_image_views_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_v1.services.image_views.transports.ImageViewsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ImageViewsTransport() + adc.assert_called_once() + + +def test_image_views_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) + ImageViewsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id=None, + ) + + +def test_image_views_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.ImageViewsRestTransport( + 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_image_views_host_no_port(transport_name): + client = ImageViewsClient( + 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_image_views_host_with_port(transport_name): + client = ImageViewsClient( + 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_image_views_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = ImageViewsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = ImageViewsClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = ImageViewsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = ImageViewsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = ImageViewsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = ImageViewsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = ImageViewsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = ImageViewsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = ImageViewsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = ImageViewsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.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 = ImageViewsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = ImageViewsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = ImageViewsClient.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.ImageViewsTransport, "_prep_wrapped_messages" + ) as prep: + client = ImageViewsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.ImageViewsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = ImageViewsClient.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 = ImageViewsClient( + 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 = ImageViewsClient( + 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", + [ + (ImageViewsClient, transports.ImageViewsRestTransport), + ], +) +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/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py index cc34ccfc3bbc..10fc915fb24d 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_images.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.images import ImagesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,377 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_deprecate_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.deprecate), "__call__") as call: + call.return_value = compute.Operation() + client.deprecate() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Image() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_from_family_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_from_family), "__call__" + ) as call: + call.return_value = compute.Image() + client.get_from_family() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ImageList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2579,7 +2958,6 @@ def test_list_rest_required_fields(request_type=compute.ListImagesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py index fcd99ec7690a..6693683555ec 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_manager_resize_requests.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -178,6 +186,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManagerResizeRequest() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceGroupManagerResizeRequestsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2408,7 +2581,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py index 69027751fb47..466672addb69 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_group_managers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,836 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_abandon_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.abandon_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.abandon_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceGroupManagerAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_apply_updates_to_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.apply_updates_to_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.apply_updates_to_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManager() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceGroupManagerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_errors_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_errors), "__call__") as call: + call.return_value = compute.InstanceGroupManagersListErrorsResponse() + client.list_errors() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_managed_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_managed_instances), "__call__" + ) as call: + call.return_value = ( + compute.InstanceGroupManagersListManagedInstancesResponse() + ) + client.list_managed_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_per_instance_configs), "__call__" + ) as call: + call.return_value = ( + compute.InstanceGroupManagersListPerInstanceConfigsResp() + ) + client.list_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_recreate_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.recreate_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.recreate_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.resume_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.resume_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_instance_template_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_instance_template), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_instance_template() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_pools_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_target_pools), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_target_pools() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_suspend_instances_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.suspend_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.suspend_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_per_instance_configs_api_version_header(transport_name): + client = InstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1404,7 +2242,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -4256,7 +5093,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4508,7 +5344,6 @@ def test_list_errors_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4781,7 +5616,6 @@ def test_list_managed_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -5057,7 +5891,6 @@ def test_list_per_instance_configs_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py index 81b5c5c0f02a..afdb337ab86e 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,348 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_instances_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceGroupAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_instances_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_instances), "__call__" + ) as call: + call.return_value = compute.InstanceGroupsListInstances() + client.list_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_instances_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_named_ports_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_named_ports), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_named_ports() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1369,7 +1719,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2569,7 +2918,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceGroupsReques "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2821,7 +3169,6 @@ def test_list_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py index 2cd3d1606dbc..0e8850db32ea 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_settings_service.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -172,6 +180,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InstanceSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py index bb8151d73545..5a2e2c0fda63 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instance_templates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,278 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceTemplateAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceTemplate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceTemplateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1272,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2330,7 +2609,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstanceTemplatesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py index b1397d0d6992..b07526574a5c 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instances.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -69,104 +77,1855 @@ CRED_INFO_STRING = json.dumps(CRED_INFO_JSON) -@pytest.fixture(autouse=True) -def disable_mtls_env(): - with mock.patch.dict( - os.environ, - { - "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", - "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", - }, - ): - yield +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert InstancesClient._get_client_cert_source(None, False) is None + assert ( + InstancesClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + InstancesClient._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 ( + InstancesClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + InstancesClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_access_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_access_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_access_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_network_interface_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_network_interface), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_network_interface() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_resource_policies_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstanceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_disk_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.attach_disk), "__call__") as call: + call.return_value = compute.Operation() + client.attach_disk() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_access_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_access_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_access_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_network_interface_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_network_interface), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_network_interface() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_disk_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.detach_disk), "__call__") as call: + call.return_value = compute.Operation() + client.detach_disk() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Instance() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_firewalls_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_firewalls), "__call__" + ) as call: + call.return_value = compute.InstancesGetEffectiveFirewallsResponse() + client.get_effective_firewalls() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_guest_attributes_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_guest_attributes), "__call__" + ) as call: + call.return_value = compute.GuestAttributes() + client.get_guest_attributes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_screenshot_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_screenshot), "__call__" + ) as call: + call.return_value = compute.Screenshot() + client.get_screenshot() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_serial_port_output_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_serial_port_output), "__call__" + ) as call: + call.return_value = compute.SerialPortOutput() + client.get_serial_port_output() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_shielded_instance_identity_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_shielded_instance_identity), "__call__" + ) as call: + call.return_value = compute.ShieldedInstanceIdentity() + client.get_shielded_instance_identity() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_referrers_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_referrers), "__call__" + ) as call: + call.return_value = compute.InstanceListReferrers() + client.list_referrers() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_resource_policies_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_report_host_as_faulty_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.report_host_as_faulty), "__call__" + ) as call: + call.return_value = compute.Operation() + client.report_host_as_faulty() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_reset_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.reset), "__call__") as call: + call.return_value = compute.Operation() + client.reset() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resume), "__call__") as call: + call.return_value = compute.Operation() + client.resume() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_send_diagnostic_interrupt_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.send_diagnostic_interrupt), "__call__" + ) as call: + call.return_value = compute.SendDiagnosticInterruptInstanceResponse() + client.send_diagnostic_interrupt() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_deletion_protection_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_deletion_protection), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_deletion_protection() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_disk_auto_delete_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_disk_auto_delete), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_disk_auto_delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_machine_resources_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_machine_resources), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_machine_resources() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_machine_type_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_machine_type), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_machine_type() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_metadata_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_metadata), "__call__") as call: + call.return_value = compute.Operation() + client.set_metadata() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_min_cpu_platform_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_min_cpu_platform), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_min_cpu_platform() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_name_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_name), "__call__") as call: + call.return_value = compute.Operation() + client.set_name() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_scheduling_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_scheduling), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_scheduling() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_service_account_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_service_account), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_service_account() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -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") +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_shielded_instance_integrity_policy_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_shielded_instance_integrity_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_shielded_instance_integrity_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -def client_cert_source_callback(): - return b"cert bytes", b"key bytes" +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_tags_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_tags), "__call__") as call: + call.return_value = compute.Operation() + client.set_tags() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -# 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() +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_simulate_maintenance_event_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.simulate_maintenance_event), "__call__" + ) as call: + call.return_value = compute.Operation() + client.simulate_maintenance_event() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -# 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 +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.start), "__call__") as call: + call.return_value = compute.Operation() + client.start() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -# 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 +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_with_encryption_key_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_with_encryption_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_with_encryption_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -@pytest.fixture(autouse=True) -def set_event_loop(): - try: - asyncio.get_running_loop() - yield - except RuntimeError: - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - try: - yield - finally: - loop.close() - asyncio.set_event_loop(None) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.stop), "__call__") as call: + call.return_value = compute.Operation() + client.stop() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) -def test__get_client_cert_source(): - mock_provided_cert_source = mock.Mock() - mock_default_cert_source = mock.Mock() +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_suspend_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.suspend), "__call__") as call: + call.return_value = compute.Operation() + client.suspend() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) - assert InstancesClient._get_client_cert_source(None, False) is None - assert ( - InstancesClient._get_client_cert_source(mock_provided_cert_source, False) - is None + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) - assert ( - InstancesClient._get_client_cert_source(mock_provided_cert_source, True) - == mock_provided_cert_source + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) - 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 ( - InstancesClient._get_client_cert_source(None, True) - is mock_default_cert_source - ) - assert ( - InstancesClient._get_client_cert_source( - mock_provided_cert_source, "true" - ) - is mock_provided_cert_source - ) + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_access_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_access_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_access_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_display_device_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_display_device), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_display_device() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_network_interface_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_network_interface), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_network_interface() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_shielded_instance_config_api_version_header(transport_name): + client = InstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_shielded_instance_config), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_shielded_instance_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) @pytest.mark.parametrize( @@ -2231,7 +3990,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -6723,7 +8481,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstancesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -6975,7 +8732,6 @@ def test_list_referrers_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -8443,7 +10199,12 @@ def test_reset_rest_required_fields(request_type=compute.ResetInstanceRequest): jsonified_request["zone"] = "zone_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("requestId",)) + assert not set(unset_fields) - set( + ( + "requestId", + "resetMode", + ) + ) # verify required fields with non-default values are left alone assert "instance" in jsonified_request @@ -8633,7 +10394,12 @@ def test_reset_unary_rest_required_fields(request_type=compute.ResetInstanceRequ jsonified_request["zone"] = "zone_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set(("requestId",)) + assert not set(unset_fields) - set( + ( + "requestId", + "resetMode", + ) + ) # verify required fields with non-default values are left alone assert "instance" in jsonified_request diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py index 0c8256f598c5..8a883f710146 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshot_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshotGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ListInstantSnapshotGroups() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2146,7 +2391,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py index 2e6b80f44dad..1eceee57beae 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_instant_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InstantSnapshotAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstantSnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1303,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2378,7 +2690,6 @@ def test_list_rest_required_fields(request_type=compute.ListInstantSnapshotsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py index 05c07ae38c80..67f0ca131653 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachment_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,313 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectAttachmentGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_operational_status_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_operational_status), "__call__" + ) as call: + call.return_value = ( + compute.InterconnectAttachmentGroupsGetOperationalStatusResponse() + ) + client.get_operational_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectAttachmentGroupsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InterconnectAttachmentGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2334,7 +2649,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py index 6673bed34921..f9d0cd85b145 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_attachments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.InterconnectAttachmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectAttachment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectAttachmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InterconnectAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1004,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2228,7 +2468,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py index 091c545388d6..b84bd1117134 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,346 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_members_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_members), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_members() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_operational_status_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_operational_status), "__call__" + ) as call: + call.return_value = compute.InterconnectGroupsGetOperationalStatusResponse() + client.get_operational_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectGroupsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = InterconnectGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2668,7 +3016,6 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectGroupsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py index 2ac58e4a5c39..903d62a7db7a 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_locations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectLocation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectLocationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1172,7 +1246,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py index b2516f631b04..64199291025e 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnect_remote_locations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectRemoteLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InterconnectRemoteLocation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectRemoteLocationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectRemoteLocationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1192,7 +1266,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py index bfa8cd00fe3f..05324f002d60 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_interconnects.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,307 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Interconnect() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_diagnostics_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_diagnostics), "__call__" + ) as call: + call.return_value = compute.InterconnectsGetDiagnosticsResponse() + client.get_diagnostics() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_macsec_config_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_macsec_config), "__call__" + ) as call: + call.return_value = compute.InterconnectsGetMacsecConfigResponse() + client.get_macsec_config() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InterconnectList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_name_api_version_header(transport_name): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_name), "__call__") as call: + call.return_value = compute.Operation() + client.set_name() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2211,7 +2520,6 @@ def test_list_rest_required_fields(request_type=compute.ListInterconnectsRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3123,121 +3431,497 @@ def test_set_labels_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.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +def test_set_name_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 = InterconnectsClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="rest", ) - # It is an error to provide a credentials file and a transport instance. - transport = transports.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = InterconnectsClient( - 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.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = InterconnectsClient( - client_options=options, - transport=transport, - ) + # Ensure method has been cached + assert client._transport.set_name 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 = InterconnectsClient( - 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.set_name] = mock_rpc - # It is an error to provide scopes and a transport instance. - transport = transports.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = InterconnectsClient( - client_options={"scopes": ["1", "2"]}, - transport=transport, - ) + request = {} + client.set_name(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.InterconnectsRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - client = InterconnectsClient(transport=transport) - assert client.transport is transport + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + client.set_name(request) -@pytest.mark.parametrize( - "transport_class", - [ - transports.InterconnectsRestTransport, - ], -) -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() + # 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_transport_kind_rest(): - transport = InterconnectsClient.get_transport_class("rest")( - credentials=ga_credentials.AnonymousCredentials() +def test_set_name_rest_required_fields(request_type=compute.SetNameInterconnectRequest): + transport_class = transports.InterconnectsRestTransport + + request_init = {} + request_init["interconnect"] = "" + 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) ) - assert transport.kind == "rest" + # verify fields with default values are dropped -def test_delete_rest_bad_request(request_type=compute.DeleteInterconnectRequest): - client = InterconnectsClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" + default_values = getattr( + transport_class._BaseSetName, + "_BaseSetName__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "interconnect": "sample2"} - request = request_type(**request_init) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) - # 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) + # verify required fields with default values are now present + jsonified_request["interconnect"] = "interconnect_value" + jsonified_request["project"] = "project_value" -@pytest.mark.parametrize( - "request_type", - [ - compute.DeleteInterconnectRequest, - dict, - ], -) -def test_delete_rest_call_success(request_type): - client = InterconnectsClient( + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "interconnect" in jsonified_request + assert jsonified_request["interconnect"] == "interconnect_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = InterconnectsClient( + 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.set_name(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_set_name_rest_flattened(): + client = InterconnectsClient( + 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", "interconnect": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_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.set_name(**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/v1/projects/{project}/global/interconnects/{interconnect}/setName" + % client.transport._host, + args[1], + ) + + +def test_set_name_rest_flattened_error(transport: str = "rest"): + client = InterconnectsClient( + 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_name( + compute.SetNameInterconnectRequest(), + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_value" + ), + ) + + +def test_set_name_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 = InterconnectsClient( + 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_name 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_name] = mock_rpc + + request = {} + client.set_name_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.set_name_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_name_unary_rest_required_fields( + request_type=compute.SetNameInterconnectRequest, +): + transport_class = transports.InterconnectsRestTransport + + request_init = {} + request_init["interconnect"] = "" + 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 + + default_values = getattr( + transport_class._BaseSetName, + "_BaseSetName__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["interconnect"] = "interconnect_value" + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set(("requestId",)) + + # verify required fields with non-default values are left alone + assert "interconnect" in jsonified_request + assert jsonified_request["interconnect"] == "interconnect_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = InterconnectsClient( + 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.set_name_unary(request) + + expected_params = [] + actual_params = req.call_args.kwargs["params"] + assert sorted(expected_params) == sorted(actual_params) + + +def test_set_name_unary_rest_flattened(): + client = InterconnectsClient( + 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", "interconnect": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_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.set_name_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/v1/projects/{project}/global/interconnects/{interconnect}/setName" + % client.transport._host, + args[1], + ) + + +def test_set_name_unary_rest_flattened_error(transport: str = "rest"): + client = InterconnectsClient( + 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_name_unary( + compute.SetNameInterconnectRequest(), + project="project_value", + interconnect="interconnect_value", + interconnects_set_name_request_resource=compute.InterconnectsSetNameRequest( + current_name="current_name_value" + ), + ) + + +def test_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InterconnectsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = InterconnectsClient( + 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 = InterconnectsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = InterconnectsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = InterconnectsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.InterconnectsRestTransport, + ], +) +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 = InterconnectsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_delete_rest_bad_request(request_type=compute.DeleteInterconnectRequest): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "interconnect": "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.DeleteInterconnectRequest, + dict, + ], +) +def test_delete_rest_call_success(request_type): + client = InterconnectsClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -4851,6 +5535,258 @@ def test_set_labels_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() +def test_set_name_rest_bad_request(request_type=compute.SetNameInterconnectRequest): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "interconnect": "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_name(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.SetNameInterconnectRequest, + dict, + ], +) +def test_set_name_rest_call_success(request_type): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "interconnect": "sample2"} + request_init["interconnects_set_name_request_resource"] = { + "current_name": "current_name_value", + "name": "name_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.SetNameInterconnectRequest.meta.fields[ + "interconnects_set_name_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[ + "interconnects_set_name_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["interconnects_set_name_request_resource"][field]), + ): + del request_init["interconnects_set_name_request_resource"][field][ + i + ][subfield] + else: + del request_init["interconnects_set_name_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.set_name(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_set_name_rest_interceptors(null_interceptor): + transport = transports.InterconnectsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.InterconnectsRestInterceptor(), + ) + client = InterconnectsClient(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.InterconnectsRestInterceptor, "post_set_name" + ) as post, + mock.patch.object( + transports.InterconnectsRestInterceptor, "post_set_name_with_metadata" + ) as post_with_metadata, + mock.patch.object( + transports.InterconnectsRestInterceptor, "pre_set_name" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.SetNameInterconnectRequest.pb( + compute.SetNameInterconnectRequest() + ) + 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.SetNameInterconnectRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.set_name( + 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 = InterconnectsClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -5012,6 +5948,25 @@ def test_set_labels_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_set_name_unary_empty_call_rest(): + client = InterconnectsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object(type(client.transport.set_name), "__call__") as call: + client.set_name_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.SetNameInterconnectRequest() + assert args[0] == request_msg + + def test_interconnects_base_transport_error(): # Passing both a credentials object and credentials_file should raise an error with pytest.raises(core_exceptions.DuplicateCredentialArgs): @@ -5042,6 +5997,7 @@ def test_interconnects_base_transport(): "list", "patch", "set_labels", + "set_name", ) for method in methods: with pytest.raises(NotImplementedError): @@ -5209,6 +6165,9 @@ def test_interconnects_client_transport_session_collision(transport_name): session1 = client1.transport.set_labels._session session2 = client2.transport.set_labels._session assert session1 != session2 + session1 = client1.transport.set_name._session + session2 = client2.transport.set_name._session + assert session1 != session2 def test_common_billing_account_path(): diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py index 98ad2c658061..67a61f095e98 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_license_codes.py @@ -58,6 +58,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -166,6 +174,144 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.LicenseCode() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = LicenseCodesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py index 40cfb8826a67..bc0ebb568149 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_licenses.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.licenses import LicensesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,276 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.License() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.LicensesListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = LicensesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2067,7 +2345,6 @@ def test_list_rest_required_fields(request_type=compute.ListLicensesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py index e9e1b1e98de2..0e845799a96b 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_images.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,276 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.MachineImage() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.MachineImageList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = MachineImagesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2055,7 +2333,6 @@ def test_list_rest_required_fields(request_type=compute.ListMachineImagesRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py index fd98c81a4cf6..3cdb40809504 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_machine_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = MachineTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.MachineTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = MachineTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.MachineType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = MachineTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.MachineTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1076,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1407,7 +1515,6 @@ def test_list_rest_required_fields(request_type=compute.ListMachineTypesRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py new file mode 100644 index 000000000000..644fafc08f52 --- /dev/null +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_managed_rulesets.py @@ -0,0 +1,2156 @@ +# -*- coding: utf-8 -*- +# Copyright 2026 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 asyncio +import json +import math +import os +from collections.abc import AsyncIterable, Iterable, Mapping, Sequence +from unittest import mock +from unittest.mock import AsyncMock + +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.auth +from google.api_core import ( + client_options, + 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_v1.services.managed_rulesets import ( + ManagedRulesetsClient, + pagers, + transports, +) +from google.cloud.compute_v1.types import compute + +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + +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) + + +@pytest.fixture(autouse=True) +def disable_mtls_env(): + with mock.patch.dict( + os.environ, + { + "GOOGLE_API_USE_CLIENT_CERTIFICATE": "false", + "CLOUDSDK_CONTEXT_AWARE_USE_CLIENT_CERTIFICATE": "false", + }, + ): + yield + + +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 + ) + + +@pytest.fixture(autouse=True) +def set_event_loop(): + try: + asyncio.get_running_loop() + yield + except RuntimeError: + loop = asyncio.new_event_loop() + asyncio.set_event_loop(loop) + try: + yield + finally: + loop.close() + asyncio.set_event_loop(None) + + +def test__get_client_cert_source(): + mock_provided_cert_source = mock.Mock() + mock_default_cert_source = mock.Mock() + + assert ManagedRulesetsClient._get_client_cert_source(None, False) is None + assert ( + ManagedRulesetsClient._get_client_cert_source(mock_provided_cert_source, False) + is None + ) + assert ( + ManagedRulesetsClient._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 ( + ManagedRulesetsClient._get_client_cert_source(None, True) + is mock_default_cert_source + ) + assert ( + ManagedRulesetsClient._get_client_cert_source( + mock_provided_cert_source, "true" + ) + is mock_provided_cert_source + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ManagedRuleset() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ManagedRulesetList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@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 = ManagedRulesetsClient(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 = ManagedRulesetsClient(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", + [ + (ManagedRulesetsClient, "rest"), + ], +) +def test_managed_rulesets_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.ManagedRulesetsRestTransport, "rest"), + ], +) +def test_managed_rulesets_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", + [ + (ManagedRulesetsClient, "rest"), + ], +) +def test_managed_rulesets_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_managed_rulesets_client_get_transport_class(): + transport = ManagedRulesetsClient.get_transport_class() + available_transports = [ + transports.ManagedRulesetsRestTransport, + ] + assert transport in available_transports + + transport = ManagedRulesetsClient.get_transport_class("rest") + assert transport == transports.ManagedRulesetsRestTransport + + +@pytest.mark.parametrize( + "client_class,transport_class,transport_name", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport, "rest"), + ], +) +@mock.patch.object( + ManagedRulesetsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ManagedRulesetsClient), +) +def test_managed_rulesets_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(ManagedRulesetsClient, "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(ManagedRulesetsClient, "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", + [ + ( + ManagedRulesetsClient, + transports.ManagedRulesetsRestTransport, + "rest", + "true", + ), + ( + ManagedRulesetsClient, + transports.ManagedRulesetsRestTransport, + "rest", + "false", + ), + ], +) +@mock.patch.object( + ManagedRulesetsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ManagedRulesetsClient), +) +@mock.patch.dict(os.environ, {"GOOGLE_API_USE_MTLS_ENDPOINT": "auto"}) +def test_managed_rulesets_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", [ManagedRulesetsClient]) +@mock.patch.object( + ManagedRulesetsClient, + "DEFAULT_ENDPOINT", + modify_default_endpoint(ManagedRulesetsClient), +) +def test_managed_rulesets_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) + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", "") + env.pop("CLOUDSDK_CONTEXT_AWARE_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), + mock.patch( + "os.path.exists", + side_effect=lambda path: os.path.basename(path) + == config_filename, + ), + ): + 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", [ManagedRulesetsClient]) +@mock.patch.object( + ManagedRulesetsClient, + "_DEFAULT_ENDPOINT_TEMPLATE", + modify_default_endpoint_template(ManagedRulesetsClient), +) +def test_managed_rulesets_client_client_api_endpoint(client_class): + mock_client_cert_source = client_cert_source_callback + api_override = "foo.com" + default_universe = ManagedRulesetsClient._DEFAULT_UNIVERSE + default_endpoint = ManagedRulesetsClient._DEFAULT_ENDPOINT_TEMPLATE.format( + UNIVERSE_DOMAIN=default_universe + ) + mock_universe = "bar.com" + mock_endpoint = ManagedRulesetsClient._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", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport, "rest"), + ], +) +def test_managed_rulesets_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", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport, "rest", None), + ], +) +def test_managed_rulesets_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_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 = ManagedRulesetsClient( + 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.GetManagedRulesetRequest): + transport_class = transports.ManagedRulesetsRestTransport + + request_init = {} + request_init["managed_ruleset"] = "" + 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 + + default_values = getattr( + transport_class._BaseGet, + "_BaseGet__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["managedRuleset"] = "managed_ruleset_value" + jsonified_request["project"] = "project_value" + + # verify required fields with non-default values are left alone + assert "managedRuleset" in jsonified_request + assert jsonified_request["managedRuleset"] == "managed_ruleset_value" + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ManagedRuleset() + # 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.ManagedRuleset.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 sorted(expected_params) == sorted(actual_params) + + +def test_get_rest_flattened(): + client = ManagedRulesetsClient( + 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.ManagedRuleset() + + # get arguments that satisfy an http rule for this method + sample_request = {"project": "sample1", "managed_ruleset": "sample2"} + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + managed_ruleset="managed_ruleset_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.ManagedRuleset.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/v1/projects/{project}/global/managedRulesets/{managed_ruleset}" + % client.transport._host, + args[1], + ) + + +def test_get_rest_flattened_error(transport: str = "rest"): + client = ManagedRulesetsClient( + 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.GetManagedRulesetRequest(), + project="project_value", + managed_ruleset="managed_ruleset_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 = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest): + transport_class = transports.ManagedRulesetsRestTransport + + 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 + + default_values = getattr( + transport_class._BaseList, + "_BaseList__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request + } + jsonified_request.update(unset_fields) + + # verify required fields with default values are now present + + jsonified_request["project"] = "project_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "filter", + "maxResults", + "orderBy", + "pageToken", + ) + ) + + # verify required fields with non-default values are left alone + assert "project" in jsonified_request + assert jsonified_request["project"] == "project_value" + + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + request = request_type(**request_init) + + # Designate an appropriate value for the returned response. + return_value = compute.ManagedRulesetList() + # 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.ManagedRulesetList.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 sorted(expected_params) == sorted(actual_params) + + +def test_list_rest_flattened(): + client = ManagedRulesetsClient( + 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.ManagedRulesetList() + + # 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.ManagedRulesetList.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/v1/projects/{project}/global/managedRulesets" + % client.transport._host, + args[1], + ) + + +def test_list_rest_flattened_error(transport: str = "rest"): + client = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest(), + project="project_value", + ) + + +def test_list_rest_pager(transport: str = "rest"): + client = ManagedRulesetsClient( + 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.ManagedRulesetList( + items=[ + compute.ManagedRuleset(), + compute.ManagedRuleset(), + compute.ManagedRuleset(), + ], + next_page_token="abc", + ), + compute.ManagedRulesetList( + items=[], + next_page_token="def", + ), + compute.ManagedRulesetList( + items=[ + compute.ManagedRuleset(), + ], + next_page_token="ghi", + ), + compute.ManagedRulesetList( + items=[ + compute.ManagedRuleset(), + compute.ManagedRuleset(), + ], + ), + ) + # Two responses for two calls + response = response + response + + # Wrap the values into proper Response objs + response = tuple(compute.ManagedRulesetList.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) + + assert pager.next_page_token == "abc" + assert str(pager).startswith(f"{pager.__class__.__name__}<") + + results = list(pager) + assert len(results) == 6 + assert all(isinstance(i, compute.ManagedRuleset) 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_credentials_transport_error(): + # It is an error to provide credentials and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + 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 = ManagedRulesetsClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = ManagedRulesetsClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = ManagedRulesetsClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.ManagedRulesetsRestTransport, + ], +) +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 = ManagedRulesetsClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_get_rest_bad_request(request_type=compute.GetManagedRulesetRequest): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "managed_ruleset": "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.GetManagedRulesetRequest, + dict, + ], +) +def test_get_rest_call_success(request_type): + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "managed_ruleset": "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.ManagedRuleset( + change_log="change_log_value", + creation_timestamp="creation_timestamp_value", + description="description_value", + id=205, + name="name_value", + rule_ids=["rule_ids_value"], + ruleset_id="ruleset_id_value", + self_link="self_link_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.ManagedRuleset.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.ManagedRuleset) + assert response.change_log == "change_log_value" + assert response.creation_timestamp == "creation_timestamp_value" + assert response.description == "description_value" + assert response.id == 205 + assert response.name == "name_value" + assert response.rule_ids == ["rule_ids_value"] + assert response.ruleset_id == "ruleset_id_value" + assert response.self_link == "self_link_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_get_rest_interceptors(null_interceptor): + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ManagedRulesetsRestInterceptor(), + ) + client = ManagedRulesetsClient(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.ManagedRulesetsRestInterceptor, "post_get" + ) as post, + mock.patch.object( + transports.ManagedRulesetsRestInterceptor, "post_get_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ManagedRulesetsRestInterceptor, "pre_get") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.GetManagedRulesetRequest.pb( + compute.GetManagedRulesetRequest() + ) + 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.ManagedRuleset.to_json(compute.ManagedRuleset()) + req.return_value.content = return_value + + request = compute.GetManagedRulesetRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ManagedRuleset() + post_with_metadata.return_value = compute.ManagedRuleset(), 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_list_rest_bad_request(request_type=compute.ListManagedRulesetsRequest): + client = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest, + dict, + ], +) +def test_list_rest_call_success(request_type): + client = ManagedRulesetsClient( + 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.ManagedRulesetList( + id="id_value", + next_page_token="next_page_token_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.ManagedRulesetList.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.id == "id_value" + assert response.next_page_token == "next_page_token_value" + + +@pytest.mark.parametrize("null_interceptor", [True, False]) +def test_list_rest_interceptors(null_interceptor): + transport = transports.ManagedRulesetsRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.ManagedRulesetsRestInterceptor(), + ) + client = ManagedRulesetsClient(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.ManagedRulesetsRestInterceptor, "post_list" + ) as post, + mock.patch.object( + transports.ManagedRulesetsRestInterceptor, "post_list_with_metadata" + ) as post_with_metadata, + mock.patch.object(transports.ManagedRulesetsRestInterceptor, "pre_list") as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.ListManagedRulesetsRequest.pb( + compute.ListManagedRulesetsRequest() + ) + 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.ManagedRulesetList.to_json(compute.ManagedRulesetList()) + req.return_value.content = return_value + + request = compute.ListManagedRulesetsRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.ManagedRulesetList() + post_with_metadata.return_value = compute.ManagedRulesetList(), 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_initialize_client_w_rest(): + client = ManagedRulesetsClient( + 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_get_empty_call_rest(): + client = ManagedRulesetsClient( + 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.GetManagedRulesetRequest() + 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 = ManagedRulesetsClient( + 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.ListManagedRulesetsRequest() + assert args[0] == request_msg + + +def test_managed_rulesets_base_transport_error(): + # Passing both a credentials object and credentials_file should raise an error + with pytest.raises(core_exceptions.DuplicateCredentialArgs): + transport = transports.ManagedRulesetsTransport( + credentials=ga_credentials.AnonymousCredentials(), + credentials_file="credentials.json", + ) + + +def test_managed_rulesets_base_transport(): + # Instantiate the base transport. + with mock.patch( + "google.cloud.compute_v1.services.managed_rulesets.transports.ManagedRulesetsTransport.__init__" + ) as Transport: + Transport.return_value = None + transport = transports.ManagedRulesetsTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + + # Every method on the transport should just blindly + # raise NotImplementedError. + methods = ( + "get", + "list", + ) + 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_managed_rulesets_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_v1.services.managed_rulesets.transports.ManagedRulesetsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + load_creds.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ManagedRulesetsTransport( + 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.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id="octopus", + ) + + +def test_managed_rulesets_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_v1.services.managed_rulesets.transports.ManagedRulesetsTransport._prep_wrapped_messages" + ) as Transport, + ): + Transport.return_value = None + adc.return_value = (ga_credentials.AnonymousCredentials(), None) + transport = transports.ManagedRulesetsTransport() + adc.assert_called_once() + + +def test_managed_rulesets_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) + ManagedRulesetsClient() + adc.assert_called_once_with( + scopes=None, + default_scopes=( + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/cloud-platform", + ), + quota_project_id=None, + ) + + +def test_managed_rulesets_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.ManagedRulesetsRestTransport( + 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_managed_rulesets_host_no_port(transport_name): + client = ManagedRulesetsClient( + 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_managed_rulesets_host_with_port(transport_name): + client = ManagedRulesetsClient( + 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_managed_rulesets_client_transport_session_collision(transport_name): + creds1 = ga_credentials.AnonymousCredentials() + creds2 = ga_credentials.AnonymousCredentials() + client1 = ManagedRulesetsClient( + credentials=creds1, + transport=transport_name, + ) + client2 = ManagedRulesetsClient( + credentials=creds2, + transport=transport_name, + ) + session1 = client1.transport.get._session + session2 = client2.transport.get._session + assert session1 != session2 + session1 = client1.transport.list._session + session2 = client2.transport.list._session + assert session1 != session2 + + +def test_common_billing_account_path(): + billing_account = "squid" + expected = "billingAccounts/{billing_account}".format( + billing_account=billing_account, + ) + actual = ManagedRulesetsClient.common_billing_account_path(billing_account) + assert expected == actual + + +def test_parse_common_billing_account_path(): + expected = { + "billing_account": "clam", + } + path = ManagedRulesetsClient.common_billing_account_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.parse_common_billing_account_path(path) + assert expected == actual + + +def test_common_folder_path(): + folder = "whelk" + expected = "folders/{folder}".format( + folder=folder, + ) + actual = ManagedRulesetsClient.common_folder_path(folder) + assert expected == actual + + +def test_parse_common_folder_path(): + expected = { + "folder": "octopus", + } + path = ManagedRulesetsClient.common_folder_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.parse_common_folder_path(path) + assert expected == actual + + +def test_common_organization_path(): + organization = "oyster" + expected = "organizations/{organization}".format( + organization=organization, + ) + actual = ManagedRulesetsClient.common_organization_path(organization) + assert expected == actual + + +def test_parse_common_organization_path(): + expected = { + "organization": "nudibranch", + } + path = ManagedRulesetsClient.common_organization_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.parse_common_organization_path(path) + assert expected == actual + + +def test_common_project_path(): + project = "cuttlefish" + expected = "projects/{project}".format( + project=project, + ) + actual = ManagedRulesetsClient.common_project_path(project) + assert expected == actual + + +def test_parse_common_project_path(): + expected = { + "project": "mussel", + } + path = ManagedRulesetsClient.common_project_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.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 = ManagedRulesetsClient.common_location_path(project, location) + assert expected == actual + + +def test_parse_common_location_path(): + expected = { + "project": "scallop", + "location": "abalone", + } + path = ManagedRulesetsClient.common_location_path(**expected) + + # Check that the path construction is reversible. + actual = ManagedRulesetsClient.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.ManagedRulesetsTransport, "_prep_wrapped_messages" + ) as prep: + client = ManagedRulesetsClient( + credentials=ga_credentials.AnonymousCredentials(), + client_info=client_info, + ) + prep.assert_called_once_with(client_info) + + with mock.patch.object( + transports.ManagedRulesetsTransport, "_prep_wrapped_messages" + ) as prep: + transport_class = ManagedRulesetsClient.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 = ManagedRulesetsClient( + 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 = ManagedRulesetsClient( + 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", + [ + (ManagedRulesetsClient, transports.ManagedRulesetsRestTransport), + ], +) +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/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py index ef77dc63bda4..7c2b1898d008 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_attachments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkAttachmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkAttachment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkAttachmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NetworkAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1307,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2402,7 +2714,6 @@ def test_list_rest_required_fields(request_type=compute.ListNetworkAttachmentsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py index f3a3026e16c0..aff7cbc3bdf4 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_edge_security_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkEdgeSecurityServiceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEdgeSecurityService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworkEdgeSecurityServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1012,7 +1187,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3210,6 +3384,7 @@ def test_insert_rest_call_success(request_type): "id": 205, "kind": "kind_value", "name": "name_value", + "params": {"resource_manager_tags": {}}, "region": "region_value", "security_policy": "security_policy_value", "self_link": "self_link_value", @@ -3481,6 +3656,7 @@ def test_patch_rest_call_success(request_type): "id": 205, "kind": "kind_value", "name": "name_value", + "params": {"resource_manager_tags": {}}, "region": "region_value", "security_policy": "security_policy_value", "self_link": "self_link_value", diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py index 9d24f7c35f79..c3f9a0eff426 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_endpoint_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,313 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_network_endpoints_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.attach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.attach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_network_endpoints_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.detach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.detach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEndpointGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkEndpointGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_network_endpoints_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_network_endpoints), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupsListNetworkEndpoints() + client.list_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1002,7 +1317,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3040,7 +3354,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3297,7 +3610,6 @@ def test_list_network_endpoints_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py index c325b3ca6a9d..c4cb3a4471f2 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_firewall_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,721 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NetworkFirewallPolicyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_clone_rules_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.clone_rules), "__call__") as call: + call.return_value = compute.Operation() + client.clone_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FirewallPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyRule() + client.get_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.FirewallPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_packet_mirroring_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_packet_mirroring_rule), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_packet_mirroring_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2182,7 +2905,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -4451,7 +5173,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -7450,6 +8171,7 @@ def test_add_association_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -8980,6 +9702,7 @@ def test_get_association_rest_call_success(request_type): display_name="display_name_value", firewall_policy_id="firewall_policy_id_value", name="name_value", + priority=898, short_name="short_name_value", ) @@ -9001,6 +9724,7 @@ def test_get_association_rest_call_success(request_type): assert response.display_name == "display_name_value" assert response.firewall_policy_id == "firewall_policy_id_value" assert response.name == "name_value" + assert response.priority == 898 assert response.short_name == "short_name_value" @@ -9571,6 +10295,7 @@ def test_insert_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -10045,6 +10770,7 @@ def test_patch_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py index 0bfd3b108ccb..4c73607b917b 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_network_profiles.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworkProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkProfile() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworkProfilesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkProfilesListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1153,7 +1227,6 @@ def test_list_rest_required_fields(request_type=compute.ListNetworkProfilesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py index c026758c7506..20f09f4a7240 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_networks.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.networks import NetworksClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,449 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_peering), "__call__") as call: + call.return_value = compute.Operation() + client.add_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_request_remove_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.cancel_request_remove_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.cancel_request_remove_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Network() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_firewalls_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_firewalls), "__call__" + ) as call: + call.return_value = compute.NetworksGetEffectiveFirewallsResponse() + client.get_effective_firewalls() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_peering_routes_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_peering_routes), "__call__" + ) as call: + call.return_value = compute.ExchangedPeeringRoutesList() + client.list_peering_routes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_request_remove_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.request_remove_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.request_remove_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_switch_to_custom_mode_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.switch_to_custom_mode), "__call__" + ) as call: + call.return_value = compute.Operation() + client.switch_to_custom_mode() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_peering_api_version_header(transport_name): + client = NetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_peering), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_peering() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2794,7 +3245,6 @@ def test_list_rest_required_fields(request_type=compute.ListNetworksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3046,7 +3496,6 @@ def test_list_peering_routes_rest_required_fields( "pageToken", "peeringName", "region", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py index aa40b57dca1a..d6c4b30a0d42 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,515 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_nodes_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_nodes), "__call__") as call: + call.return_value = compute.Operation() + client.add_nodes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NodeGroupAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_nodes_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete_nodes), "__call__") as call: + call.return_value = compute.Operation() + client.delete_nodes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NodeGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NodeGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_nodes_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_nodes), "__call__") as call: + call.return_value = compute.NodeGroupsListNodes() + client.list_nodes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_node_template_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_node_template), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_node_template() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_simulate_maintenance_event_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.simulate_maintenance_event), "__call__" + ) as call: + call.return_value = compute.Operation() + client.simulate_maintenance_event() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NodeGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1365,7 +1882,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3180,7 +3696,6 @@ def test_list_rest_required_fields(request_type=compute.ListNodeGroupsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3432,7 +3947,6 @@ def test_list_nodes_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py index dd8e2322c185..93123b2d6efe 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_templates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,278 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NodeTemplateAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NodeTemplate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NodeTemplateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = NodeTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -971,7 +1251,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2359,7 +2638,6 @@ def test_list_rest_required_fields(request_type=compute.ListNodeTemplatesRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py index 7a1705494e46..f10ae2f2ec03 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_node_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = NodeTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NodeTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = NodeTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NodeType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = NodeTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NodeTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -967,7 +1076,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1404,7 +1512,6 @@ def test_list_rest_required_fields(request_type=compute.ListNodeTypesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py index 14982680d8cb..6fcba7c2346d 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_organization_security_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,548 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_copy_rules_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.copy_rules), "__call__") as call: + call.return_value = compute.Operation() + client.copy_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SecurityPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.SecurityPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.SecurityPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SecurityPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_associations_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_associations), "__call__" + ) as call: + call.return_value = ( + compute.OrganizationSecurityPoliciesListAssociationsResponse() + ) + client.list_associations() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_preconfigured_expression_sets_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_preconfigured_expression_sets), "__call__" + ) as call: + call.return_value = ( + compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse() + ) + client.list_preconfigured_expression_sets() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move), "__call__") as call: + call.return_value = compute.Operation() + client.move() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = OrganizationSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -5751,9 +6301,10 @@ def test_add_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6889,6 +7440,7 @@ def test_insert_rest_call_success(request_type): "label_fingerprint": "label_fingerprint_value", "labels": {}, "name": "name_value", + "params": {"resource_manager_tags": {}}, "parent": "parent_value", "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"}, "region": "region_value", @@ -6956,9 +7508,10 @@ def test_insert_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -7920,6 +8473,7 @@ def test_patch_rest_call_success(request_type): "label_fingerprint": "label_fingerprint_value", "labels": {}, "name": "name_value", + "params": {"resource_manager_tags": {}}, "parent": "parent_value", "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"}, "region": "region_value", @@ -7987,9 +8541,10 @@ def test_patch_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -8333,9 +8888,10 @@ def test_patch_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py index 6ade74b29e31..aed2cb8b6a66 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_packet_mirrorings.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.PacketMirroringAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PacketMirroring() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PacketMirroringList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = PacketMirroringsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1233,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2198,7 +2440,6 @@ def test_list_rest_required_fields(request_type=compute.ListPacketMirroringsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py index 96c85dc1b3a3..07bdd18fe855 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_preview_features.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,105 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PreviewFeaturesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PreviewFeature() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PreviewFeaturesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PreviewFeatureList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = PreviewFeaturesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1155,7 +1262,6 @@ def test_list_rest_required_fields(request_type=compute.ListPreviewFeaturesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py index 3c63195a7d87..a1ede4f877ff 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_project_views.py @@ -58,6 +58,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -166,6 +174,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ProjectViewsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ProjectView() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py index f10c05fcef05..9e82c898f872 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_projects.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.projects import ProjectsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,490 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_disable_xpn_host_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.disable_xpn_host), "__call__" + ) as call: + call.return_value = compute.Operation() + client.disable_xpn_host() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_disable_xpn_resource_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.disable_xpn_resource), "__call__" + ) as call: + call.return_value = compute.Operation() + client.disable_xpn_resource() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_enable_xpn_host_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.enable_xpn_host), "__call__" + ) as call: + call.return_value = compute.Operation() + client.enable_xpn_host() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_enable_xpn_resource_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.enable_xpn_resource), "__call__" + ) as call: + call.return_value = compute.Operation() + client.enable_xpn_resource() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Project() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_xpn_host_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_xpn_host), "__call__") as call: + call.return_value = compute.Project() + client.get_xpn_host() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_xpn_resources_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_xpn_resources), "__call__" + ) as call: + call.return_value = compute.ProjectsGetXpnResources() + client.get_xpn_resources() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_xpn_hosts_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_xpn_hosts), "__call__" + ) as call: + call.return_value = compute.XpnHostList() + client.list_xpn_hosts() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_disk_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.move_disk), "__call__") as call: + call.return_value = compute.Operation() + client.move_disk() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_move_instance_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.move_instance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.move_instance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_cloud_armor_tier_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_cloud_armor_tier), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_cloud_armor_tier() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_common_instance_metadata_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_common_instance_metadata), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_common_instance_metadata() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_default_network_tier_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_default_network_tier), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_default_network_tier() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_usage_export_bucket_api_version_header(transport_name): + client = ProjectsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_usage_export_bucket), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_usage_export_bucket() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2748,7 +3240,6 @@ def test_get_xpn_resources_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2991,7 +3482,6 @@ def test_list_xpn_hosts_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py index 0b4a4281fd85..66630751e0a1 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_advertised_prefixes.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_announce_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.announce), "__call__") as call: + call.return_value = compute.Operation() + client.announce() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PublicAdvertisedPrefix() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PublicAdvertisedPrefixList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_withdraw_api_version_header(transport_name): + client = PublicAdvertisedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.withdraw), "__call__") as call: + call.return_value = compute.Operation() + client.withdraw() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2286,7 +2525,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py index 33a8c504197a..f40c75d2197e 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_public_delegated_prefixes.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,272 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.PublicDelegatedPrefixAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_announce_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.announce), "__call__") as call: + call.return_value = compute.Operation() + client.announce() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefix() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.PublicDelegatedPrefixList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_withdraw_api_version_header(transport_name): + client = PublicDelegatedPrefixesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.withdraw), "__call__") as call: + call.return_value = compute.Operation() + client.withdraw() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1004,7 +1278,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2596,7 +2869,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py index a87c6d4177b0..0847eaf76c64 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_autoscalers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Autoscaler() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionAutoscalerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionAutoscalersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1936,7 +2177,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionAutoscalersReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3525,6 +3765,8 @@ def test_insert_rest_call_success(request_type): "cool_down_period_sec": 2112, "cpu_utilization": { "predictive_method": "predictive_method_value", + "utilization_max": 0.1633, + "utilization_min": 0.1631, "utilization_target": 0.19540000000000002, }, "custom_metric_utilizations": [ @@ -3945,6 +4187,8 @@ def test_patch_rest_call_success(request_type): "cool_down_period_sec": 2112, "cpu_utilization": { "predictive_method": "predictive_method_value", + "utilization_max": 0.1633, + "utilization_min": 0.1631, "utilization_target": 0.19540000000000002, }, "custom_metric_utilizations": [ @@ -4438,6 +4682,8 @@ def test_update_rest_call_success(request_type): "cool_down_period_sec": 2112, "cpu_utilization": { "predictive_method": "predictive_method_value", + "utilization_max": 0.1633, + "utilization_min": 0.1631, "utilization_target": 0.19540000000000002, }, "custom_metric_utilizations": [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py index 64ea6394bc41..833bb88a94c9 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_buckets.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,309 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendBucket() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendBucketList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendBucketListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionBackendBucketsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2136,7 +2447,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2386,7 +2696,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py index a671d55511d2..75fa7d50bd63 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_backend_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,410 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.BackendService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.BackendServiceGroupHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.BackendServiceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.BackendServiceListUsable() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionBackendServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2328,7 +2740,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2578,7 +2989,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py index b67aff0524f4..2d77b14a804a 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_commitments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.CommitmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Commitment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.CommitmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionCommitmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1167,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1802,7 +1976,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionCommitmentsReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2881,6 +3054,7 @@ def test_insert_rest_call_success(request_type): "health_status": "health_status_value", "healthy_block_count": 2017, }, + "machine_count": 1373, "reservation_block_count": 2468, "reservation_maintenance": { "instance_maintenance_ongoing_count": 3599, @@ -3404,6 +3578,7 @@ def test_update_rest_call_success(request_type): "health_status": "health_status_value", "healthy_block_count": 2017, }, + "machine_count": 1373, "reservation_block_count": 2468, "reservation_maintenance": { "instance_maintenance_ongoing_count": 3599, diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py index 38b06e870415..365ed0b9a1ea 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_composite_health_checks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.CompositeHealthCheckAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.CompositeHealthCheck() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.CompositeHealthCheckHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.CompositeHealthCheckList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionCompositeHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1012,7 +1288,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2405,7 +2680,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py index 25fdb23710c8..1d6103544bcd 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disk_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionDiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.DiskType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionDiskTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionDiskTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1165,7 +1239,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDiskTypesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py index e188b327c6fc..d777dc155d7d 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_disks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,620 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_resource_policies_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_snapshot_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_snapshot), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_snapshot() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Disk() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.DiskList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_resource_policies_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_resource_policies), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_resource_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_async_replication_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_async_replication_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_group_async_replication_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_group_async_replication), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_group_async_replication() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = RegionDisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -3255,7 +3877,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionDisksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py index 213a283cf293..3e57994ceb4b 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_aggregation_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -178,6 +186,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthAggregationPolicyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthAggregationPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthAggregationPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthAggregationPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1017,7 +1260,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2236,7 +2478,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py index 344d4ea132b2..ca3b8a69b0d1 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_check_services.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthCheckServiceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthCheckService() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthCheckServicesList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthCheckServicesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1010,7 +1253,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2218,7 +2460,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py index e4ab49a135f0..f94485a1ead1 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_checks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthCheck() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthCheckList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionHealthChecksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1930,7 +2171,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthChecksRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py index 2b469be7dd82..bbbebd96acc5 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_health_sources.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.HealthSourceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.HealthSource() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.HealthSourceHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.HealthSourceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionHealthSourcesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1002,7 +1278,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2391,7 +2666,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionHealthSourcesR "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py index 562c5e373fb6..9fe1115921e0 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_manager_resize_requests.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -180,6 +188,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManagerResizeRequest() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceGroupManagerResizeRequestsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = ( + compute.RegionInstanceGroupManagerResizeRequestsListResponse() + ) + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2412,7 +2587,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py index 7cd0e3e62fac..461c73e937a3 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_group_managers.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,801 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_abandon_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.abandon_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.abandon_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_apply_updates_to_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.apply_updates_to_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.apply_updates_to_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_create_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.create_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.create_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroupManager() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionInstanceGroupManagerList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_errors_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_errors), "__call__") as call: + call.return_value = compute.RegionInstanceGroupManagersListErrorsResponse() + client.list_errors() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_managed_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_managed_instances), "__call__" + ) as call: + call.return_value = ( + compute.RegionInstanceGroupManagersListInstancesResponse() + ) + client.list_managed_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_per_instance_configs), "__call__" + ) as call: + call.return_value = ( + compute.RegionInstanceGroupManagersListInstanceConfigsResp() + ) + client.list_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_recreate_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.recreate_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.recreate_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.resume_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.resume_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_instance_template_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_instance_template), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_instance_template() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_target_pools_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_target_pools), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_target_pools() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_start_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.start_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.start_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_stop_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.stop_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.stop_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_suspend_instances_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.suspend_instances), "__call__" + ) as call: + call.return_value = compute.Operation() + client.suspend_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_per_instance_configs_api_version_header(transport_name): + client = RegionInstanceGroupManagersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_per_instance_configs), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_per_instance_configs() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -4008,7 +4811,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4262,7 +5064,6 @@ def test_list_errors_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4538,7 +5339,6 @@ def test_list_managed_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4814,7 +5614,6 @@ def test_list_per_instance_configs_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py index 7db00037a9f8..c146c3391d86 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,177 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionInstanceGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_instances_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_instances), "__call__" + ) as call: + call.return_value = compute.RegionInstanceGroupsListInstances() + client.list_instances() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_named_ports_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_named_ports), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_named_ports() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionInstanceGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1186,7 +1365,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -1438,7 +1616,6 @@ def test_list_instances_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py index c31b1e168c9c..5e8a9dc07760 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instance_templates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstanceTemplate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstanceTemplatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstanceTemplateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1952,7 +2092,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py index bd630e1b401c..843c38bf6acb 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instances.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -168,6 +176,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_bulk_insert_api_version_header(transport_name): + client = RegionInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.bulk_insert), "__call__") as call: + call.return_value = compute.Operation() + client.bulk_insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py index 22904153449d..59c0cedc2da4 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshot_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshotGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ListInstantSnapshotGroups() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionInstantSnapshotGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2158,7 +2403,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py index 9432957a6783..5199fa8a1267 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_instant_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,276 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.InstantSnapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.InstantSnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionInstantSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2138,7 +2416,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py index 40a7b531769c..816de65eccc7 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_endpoint_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_attach_network_endpoints_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.attach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.attach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_detach_network_endpoints_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.detach_network_endpoints), "__call__" + ) as call: + call.return_value = compute.Operation() + client.detach_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NetworkEndpointGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NetworkEndpointGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_network_endpoints_api_version_header(transport_name): + client = RegionNetworkEndpointGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_network_endpoints), "__call__" + ) as call: + call.return_value = compute.NetworkEndpointGroupsListNetworkEndpoints() + client.list_network_endpoints() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2792,7 +3037,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3049,7 +3293,6 @@ def test_list_network_endpoints_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py index 3587f66228f4..98e610fb02fe 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_network_firewall_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,618 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_clone_rules_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.clone_rules), "__call__") as call: + call.return_value = compute.Operation() + client.clone_rules() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.FirewallPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_association), "__call__" + ) as call: + call.return_value = compute.FirewallPolicyAssociation() + client.get_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_effective_firewalls_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_effective_firewalls), "__call__" + ) as call: + call.return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + ) + client.get_effective_firewalls() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.FirewallPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.FirewallPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_association_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_association), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_association() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1017,6 +1637,7 @@ def test_add_association_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( + "associatedPolicyToBeReplaced", "replaceExistingAssociation", "requestId", ) @@ -1221,6 +1842,7 @@ def test_add_association_unary_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( + "associatedPolicyToBeReplaced", "replaceExistingAssociation", "requestId", ) @@ -3961,7 +4583,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4551,7 +5172,7 @@ def test_patch_unary_rest_flattened_error(transport: str = "rest"): ) -def test_patch_rule_rest_use_cached_wrapped_rpc(): +def test_patch_association_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: @@ -4565,17 +5186,19 @@ def test_patch_rule_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch_rule in client._transport._wrapped_methods + assert client._transport.patch_association 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_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.patch_association] = ( + mock_rpc + ) request = {} - client.patch_rule(request) + client.patch_association(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -4584,15 +5207,15 @@ def test_patch_rule_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.patch_rule(request) + client.patch_association(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_rule_rest_required_fields( - request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, +def test_patch_association_rest_required_fields( + request_type=compute.PatchAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -4609,8 +5232,8 @@ def test_patch_rule_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BasePatchRule, - "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchAssociation, + "_BasePatchAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -4625,12 +5248,7 @@ def test_patch_rule_rest_required_fields( jsonified_request["region"] = "region_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "priority", - "requestId", - ) - ) + assert not set(unset_fields) - set(("requestId",)) # verify required fields with non-default values are left alone assert "firewallPolicy" in jsonified_request @@ -4676,14 +5294,14 @@ def test_patch_rule_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_rule(request) + response = client.patch_association(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_patch_rule_rest_flattened(): +def test_patch_association_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4706,8 +5324,8 @@ def test_patch_rule_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) mock_args.update(sample_request) @@ -4722,20 +5340,20 @@ def test_patch_rule_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_rule(**mock_args) + client.patch_association(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchAssociation" % client.transport._host, args[1], ) -def test_patch_rule_rest_flattened_error(transport: str = "rest"): +def test_patch_association_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4744,18 +5362,18 @@ def test_patch_rule_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_rule( - compute.PatchRuleRegionNetworkFirewallPolicyRequest(), + client.patch_association( + compute.PatchAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) -def test_patch_rule_unary_rest_use_cached_wrapped_rpc(): +def test_patch_association_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: @@ -4769,17 +5387,19 @@ def test_patch_rule_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.patch_rule in client._transport._wrapped_methods + assert client._transport.patch_association 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_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.patch_association] = ( + mock_rpc + ) request = {} - client.patch_rule_unary(request) + client.patch_association_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -4788,15 +5408,15 @@ def test_patch_rule_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.patch_rule_unary(request) + client.patch_association_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_rule_unary_rest_required_fields( - request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, +def test_patch_association_unary_rest_required_fields( + request_type=compute.PatchAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -4813,8 +5433,8 @@ def test_patch_rule_unary_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BasePatchRule, - "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchAssociation, + "_BasePatchAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -4829,12 +5449,7 @@ def test_patch_rule_unary_rest_required_fields( jsonified_request["region"] = "region_value" # Check that path parameters and body parameters are not mixing in. - assert not set(unset_fields) - set( - ( - "priority", - "requestId", - ) - ) + assert not set(unset_fields) - set(("requestId",)) # verify required fields with non-default values are left alone assert "firewallPolicy" in jsonified_request @@ -4880,14 +5495,14 @@ def test_patch_rule_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.patch_rule_unary(request) + response = client.patch_association_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_patch_rule_unary_rest_flattened(): +def test_patch_association_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -4910,8 +5525,8 @@ def test_patch_rule_unary_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) mock_args.update(sample_request) @@ -4926,20 +5541,20 @@ def test_patch_rule_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.patch_rule_unary(**mock_args) + client.patch_association_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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchAssociation" % client.transport._host, args[1], ) -def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_association_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -4948,18 +5563,18 @@ def test_patch_rule_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_rule_unary( - compute.PatchRuleRegionNetworkFirewallPolicyRequest(), + client.patch_association_unary( + compute.PatchAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", - firewall_policy_rule_resource=compute.FirewallPolicyRule( - action="action_value" + firewall_policy_association_resource=compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value" ), ) -def test_remove_association_rest_use_cached_wrapped_rpc(): +def test_patch_rule_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: @@ -4973,21 +5588,17 @@ def test_remove_association_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.remove_association in client._transport._wrapped_methods - ) + assert client._transport.patch_rule 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.remove_association] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.patch_rule] = mock_rpc request = {} - client.remove_association(request) + client.patch_rule(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -4996,15 +5607,15 @@ def test_remove_association_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_association(request) + client.patch_rule(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_remove_association_rest_required_fields( - request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, +def test_patch_rule_rest_required_fields( + request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5021,8 +5632,8 @@ def test_remove_association_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveAssociation, - "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchRule, + "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5039,7 +5650,7 @@ def test_remove_association_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "name", + "priority", "requestId", ) ) @@ -5074,6 +5685,7 @@ def test_remove_association_rest_required_fields( "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -5087,14 +5699,14 @@ def test_remove_association_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_association(request) + response = client.patch_rule(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_association_rest_flattened(): +def test_patch_rule_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5117,6 +5729,9 @@ def test_remove_association_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) mock_args.update(sample_request) @@ -5130,20 +5745,20 @@ def test_remove_association_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_association(**mock_args) + client.patch_rule(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" % client.transport._host, args[1], ) -def test_remove_association_rest_flattened_error(transport: str = "rest"): +def test_patch_rule_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5152,15 +5767,18 @@ def test_remove_association_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.remove_association( - compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), + client.patch_rule( + compute.PatchRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) -def test_remove_association_unary_rest_use_cached_wrapped_rpc(): +def test_patch_rule_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: @@ -5174,21 +5792,17 @@ def test_remove_association_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert ( - client._transport.remove_association in client._transport._wrapped_methods - ) + assert client._transport.patch_rule 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.remove_association] = ( - mock_rpc - ) + client._transport._wrapped_methods[client._transport.patch_rule] = mock_rpc request = {} - client.remove_association_unary(request) + client.patch_rule_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5197,15 +5811,15 @@ def test_remove_association_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_association_unary(request) + client.patch_rule_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_remove_association_unary_rest_required_fields( - request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, +def test_patch_rule_unary_rest_required_fields( + request_type=compute.PatchRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5222,8 +5836,8 @@ def test_remove_association_unary_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveAssociation, - "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BasePatchRule, + "_BasePatchRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5240,7 +5854,7 @@ def test_remove_association_unary_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "name", + "priority", "requestId", ) ) @@ -5275,6 +5889,7 @@ def test_remove_association_unary_rest_required_fields( "method": "post", "query_params": pb_request, } + transcode_result["body"] = pb_request transcode.return_value = transcode_result response_value = Response() @@ -5288,14 +5903,14 @@ def test_remove_association_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_association_unary(request) + response = client.patch_rule_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_association_unary_rest_flattened(): +def test_patch_rule_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5318,6 +5933,9 @@ def test_remove_association_unary_rest_flattened(): project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) mock_args.update(sample_request) @@ -5331,20 +5949,20 @@ def test_remove_association_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_association_unary(**mock_args) + client.patch_rule_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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/patchRule" % client.transport._host, args[1], ) -def test_remove_association_unary_rest_flattened_error(transport: str = "rest"): +def test_patch_rule_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5353,15 +5971,18 @@ def test_remove_association_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.remove_association_unary( - compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), + client.patch_rule_unary( + compute.PatchRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", + firewall_policy_rule_resource=compute.FirewallPolicyRule( + action="action_value" + ), ) -def test_remove_rule_rest_use_cached_wrapped_rpc(): +def test_remove_association_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: @@ -5375,17 +5996,21 @@ def test_remove_rule_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.remove_rule in client._transport._wrapped_methods + assert ( + client._transport.remove_association 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.remove_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.remove_association] = ( + mock_rpc + ) request = {} - client.remove_rule(request) + client.remove_association(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5394,15 +6019,15 @@ def test_remove_rule_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_rule(request) + client.remove_association(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_remove_rule_rest_required_fields( - request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, +def test_remove_association_rest_required_fields( + request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5419,8 +6044,8 @@ def test_remove_rule_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveRule, - "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveAssociation, + "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5437,7 +6062,7 @@ def test_remove_rule_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "priority", + "name", "requestId", ) ) @@ -5485,14 +6110,14 @@ def test_remove_rule_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_rule(request) + response = client.remove_association(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_rule_rest_flattened(): +def test_remove_association_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5528,20 +6153,20 @@ def test_remove_rule_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_rule(**mock_args) + client.remove_association(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" % client.transport._host, args[1], ) -def test_remove_rule_rest_flattened_error(transport: str = "rest"): +def test_remove_association_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5550,15 +6175,15 @@ def test_remove_rule_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.remove_rule( - compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), + client.remove_association( + compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", ) -def test_remove_rule_unary_rest_use_cached_wrapped_rpc(): +def test_remove_association_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: @@ -5572,17 +6197,21 @@ def test_remove_rule_unary_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.remove_rule in client._transport._wrapped_methods + assert ( + client._transport.remove_association 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.remove_rule] = mock_rpc + client._transport._wrapped_methods[client._transport.remove_association] = ( + mock_rpc + ) request = {} - client.remove_rule_unary(request) + client.remove_association_unary(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 @@ -5591,15 +6220,15 @@ def test_remove_rule_unary_rest_use_cached_wrapped_rpc(): # subsequent calls should use the cached wrapper wrapper_fn.reset_mock() - client.remove_rule_unary(request) + client.remove_association_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_remove_rule_unary_rest_required_fields( - request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, +def test_remove_association_unary_rest_required_fields( + request_type=compute.RemoveAssociationRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport @@ -5616,8 +6245,8 @@ def test_remove_rule_unary_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseRemoveRule, - "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveAssociation, + "_BaseRemoveAssociation__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5634,7 +6263,7 @@ def test_remove_rule_unary_rest_required_fields( # Check that path parameters and body parameters are not mixing in. assert not set(unset_fields) - set( ( - "priority", + "name", "requestId", ) ) @@ -5682,14 +6311,14 @@ def test_remove_rule_unary_rest_required_fields( req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - response = client.remove_rule_unary(request) + response = client.remove_association_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_remove_rule_unary_rest_flattened(): +def test_remove_association_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5725,20 +6354,20 @@ def test_remove_rule_unary_rest_flattened(): req.return_value = response_value req.return_value.headers = {"header-1": "value-1", "header-2": "value-2"} - client.remove_rule_unary(**mock_args) + client.remove_association_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/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeAssociation" % client.transport._host, args[1], ) -def test_remove_rule_unary_rest_flattened_error(transport: str = "rest"): +def test_remove_association_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5747,15 +6376,15 @@ def test_remove_rule_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.remove_rule_unary( - compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), + client.remove_association_unary( + compute.RemoveAssociationRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", firewall_policy="firewall_policy_value", ) -def test_set_iam_policy_rest_use_cached_wrapped_rpc(): +def test_remove_rule_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: @@ -5769,37 +6398,41 @@ def test_set_iam_policy_rest_use_cached_wrapped_rpc(): wrapper_fn.reset_mock() # Ensure method has been cached - assert client._transport.set_iam_policy in client._transport._wrapped_methods + assert client._transport.remove_rule 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 + client._transport._wrapped_methods[client._transport.remove_rule] = mock_rpc request = {} - client.set_iam_policy(request) + client.remove_rule(request) # Establish that the underlying gRPC stub method was called. assert mock_rpc.call_count == 1 - client.set_iam_policy(request) + # Operation methods build a cached wrapper on first rpc call + # subsequent calls should use the cached wrapper + wrapper_fn.reset_mock() + + client.remove_rule(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.SetIamPolicyRegionNetworkFirewallPolicyRequest, +def test_remove_rule_rest_required_fields( + request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport request_init = {} + request_init["firewall_policy"] = "" request_init["project"] = "" request_init["region"] = "" - request_init["resource"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -5809,8 +6442,8 @@ def test_set_iam_policy_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseSetIamPolicy, - "_BaseSetIamPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveRule, + "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -5820,17 +6453,25 @@ def test_set_iam_policy_rest_required_fields( # verify required fields with default values are now present + jsonified_request["firewallPolicy"] = "firewall_policy_value" jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["resource"] = "resource_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "priority", + "requestId", + ) + ) # verify required fields with non-default values are left alone + assert "firewallPolicy" in jsonified_request + assert jsonified_request["firewallPolicy"] == "firewall_policy_value" 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 = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -5839,7 +6480,7 @@ def test_set_iam_policy_rest_required_fields( request = request_type(**request_init) # Designate an appropriate value for the returned response. - return_value = compute.Policy() + 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 @@ -5854,28 +6495,27 @@ def test_set_iam_policy_rest_required_fields( "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) + 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.set_iam_policy(request) + response = client.remove_rule(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_set_iam_policy_rest_flattened(): +def test_remove_rule_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -5884,27 +6524,20 @@ def test_set_iam_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.Policy() + return_value = compute.Operation() # get arguments that satisfy an http rule for this method sample_request = { "project": "sample1", "region": "sample2", - "resource": "sample3", + "firewall_policy": "sample3", } # get truthy value for each flattened field mock_args = dict( project="project_value", region="region_value", - resource="resource_value", - region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[ - compute.Binding( - condition=compute.Expr(description="description_value") - ) - ] - ), + firewall_policy="firewall_policy_value", ) mock_args.update(sample_request) @@ -5912,26 +6545,26 @@ def test_set_iam_policy_rest_flattened(): response_value = Response() response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Policy.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.set_iam_policy(**mock_args) + client.remove_rule(**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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/setIamPolicy" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" % client.transport._host, args[1], ) -def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): +def test_remove_rule_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -5940,22 +6573,15 @@ def test_set_iam_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.set_iam_policy( - compute.SetIamPolicyRegionNetworkFirewallPolicyRequest(), + client.remove_rule( + compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", - resource="resource_value", - region_set_policy_request_resource=compute.RegionSetPolicyRequest( - bindings=[ - compute.Binding( - condition=compute.Expr(description="description_value") - ) - ] - ), + firewall_policy="firewall_policy_value", ) -def test_test_iam_permissions_rest_use_cached_wrapped_rpc(): +def test_remove_rule_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: @@ -5969,41 +6595,41 @@ 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.remove_rule 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.remove_rule] = mock_rpc request = {} - client.test_iam_permissions(request) + client.remove_rule_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.remove_rule_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.TestIamPermissionsRegionNetworkFirewallPolicyRequest, +def test_remove_rule_unary_rest_required_fields( + request_type=compute.RemoveRuleRegionNetworkFirewallPolicyRequest, ): transport_class = transports.RegionNetworkFirewallPoliciesRestTransport request_init = {} + request_init["firewall_policy"] = "" request_init["project"] = "" request_init["region"] = "" - request_init["resource"] = "" request = request_type(**request_init) pb_request = request_type.pb(request) jsonified_request = json.loads( @@ -6013,8 +6639,8 @@ def test_test_iam_permissions_rest_required_fields( # verify fields with default values are dropped default_values = getattr( - transport_class._BaseTestIamPermissions, - "_BaseTestIamPermissions__REQUIRED_FIELDS_DEFAULT_VALUES", + transport_class._BaseRemoveRule, + "_BaseRemoveRule__REQUIRED_FIELDS_DEFAULT_VALUES", {}, ) unset_fields = { @@ -6024,17 +6650,25 @@ def test_test_iam_permissions_rest_required_fields( # verify required fields with default values are now present + jsonified_request["firewallPolicy"] = "firewall_policy_value" jsonified_request["project"] = "project_value" jsonified_request["region"] = "region_value" - jsonified_request["resource"] = "resource_value" + + # Check that path parameters and body parameters are not mixing in. + assert not set(unset_fields) - set( + ( + "priority", + "requestId", + ) + ) # verify required fields with non-default values are left alone + assert "firewallPolicy" in jsonified_request + assert jsonified_request["firewallPolicy"] == "firewall_policy_value" 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 = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), @@ -6043,7 +6677,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 @@ -6058,28 +6692,27 @@ def test_test_iam_permissions_rest_required_fields( "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) + 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.remove_rule_unary(request) expected_params = [] actual_params = req.call_args.kwargs["params"] assert sorted(expected_params) == sorted(actual_params) -def test_test_iam_permissions_rest_flattened(): +def test_remove_rule_unary_rest_flattened(): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest", @@ -6088,23 +6721,20 @@ 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", + "firewall_policy": "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"] - ), + firewall_policy="firewall_policy_value", ) mock_args.update(sample_request) @@ -6112,26 +6742,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.remove_rule_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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/testIamPermissions" + "%s/compute/v1/projects/{project}/regions/{region}/firewallPolicies/{firewall_policy}/removeRule" % client.transport._host, args[1], ) -def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): +def test_remove_rule_unary_rest_flattened_error(transport: str = "rest"): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport=transport, @@ -6140,137 +6770,798 @@ 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.TestIamPermissionsRegionNetworkFirewallPolicyRequest(), + client.remove_rule_unary( + compute.RemoveRuleRegionNetworkFirewallPolicyRequest(), project="project_value", region="region_value", - resource="resource_value", - test_permissions_request_resource=compute.TestPermissionsRequest( - permissions=["permissions_value"] - ), + firewall_policy="firewall_policy_value", ) -def test_credentials_transport_error(): - # It is an error to provide credentials and a transport instance. - transport = transports.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): +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 = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), - transport=transport, + transport="rest", ) - # It is an error to provide a credentials file and a transport instance. - transport = transports.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = RegionNetworkFirewallPoliciesClient( - 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.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - options = client_options.ClientOptions() - options.api_key = "api_key" - with pytest.raises(ValueError): - client = RegionNetworkFirewallPoliciesClient( - client_options=options, - transport=transport, - ) + # Ensure method has been cached + assert client._transport.set_iam_policy 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 = RegionNetworkFirewallPoliciesClient( - 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.set_iam_policy] = mock_rpc - # It is an error to provide scopes and a transport instance. - transport = transports.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - with pytest.raises(ValueError): - client = RegionNetworkFirewallPoliciesClient( - client_options={"scopes": ["1", "2"]}, - transport=transport, - ) + request = {} + client.set_iam_policy(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.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - ) - client = RegionNetworkFirewallPoliciesClient(transport=transport) - assert client.transport is transport + 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 -@pytest.mark.parametrize( - "transport_class", - [ - transports.RegionNetworkFirewallPoliciesRestTransport, - ], -) -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_set_iam_policy_rest_required_fields( + request_type=compute.SetIamPolicyRegionNetworkFirewallPolicyRequest, +): + transport_class = transports.RegionNetworkFirewallPoliciesRestTransport -def test_transport_kind_rest(): - transport = RegionNetworkFirewallPoliciesClient.get_transport_class("rest")( - credentials=ga_credentials.AnonymousCredentials() + 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) ) - assert transport.kind == "rest" + # verify fields with default values are dropped -def test_add_association_rest_bad_request( - request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest, -): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" + default_values = getattr( + transport_class._BaseSetIamPolicy, + "_BaseSetIamPolicy__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, ) - # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", + unset_fields = { + k: v for k, v in default_values.items() if k not in jsonified_request } - 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.add_association(request) + jsonified_request.update(unset_fields) + # verify required fields with default values are now present -@pytest.mark.parametrize( + jsonified_request["project"] = "project_value" + jsonified_request["region"] = "region_value" + jsonified_request["resource"] = "resource_value" + + # 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 = RegionNetworkFirewallPoliciesClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_set_iam_policy_rest_flattened(): + client = RegionNetworkFirewallPoliciesClient( + 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", + "region": "sample2", + "resource": "sample3", + } + + # get truthy value for each flattened field + mock_args = dict( + project="project_value", + region="region_value", + resource="resource_value", + region_set_policy_request_resource=compute.RegionSetPolicyRequest( + bindings=[ + compute.Binding( + condition=compute.Expr(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.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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/setIamPolicy" + % client.transport._host, + args[1], + ) + + +def test_set_iam_policy_rest_flattened_error(transport: str = "rest"): + client = RegionNetworkFirewallPoliciesClient( + 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.SetIamPolicyRegionNetworkFirewallPolicyRequest(), + project="project_value", + region="region_value", + resource="resource_value", + region_set_policy_request_resource=compute.RegionSetPolicyRequest( + bindings=[ + compute.Binding( + condition=compute.Expr(description="description_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 = RegionNetworkFirewallPoliciesClient( + 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.TestIamPermissionsRegionNetworkFirewallPolicyRequest, +): + transport_class = transports.RegionNetworkFirewallPoliciesRestTransport + + 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 + + default_values = getattr( + transport_class._BaseTestIamPermissions, + "_BaseTestIamPermissions__REQUIRED_FIELDS_DEFAULT_VALUES", + {}, + ) + unset_fields = { + k: v for k, v in default_values.items() if k not in 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" + + # 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 = RegionNetworkFirewallPoliciesClient( + 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 sorted(expected_params) == sorted(actual_params) + + +def test_test_iam_permissions_rest_flattened(): + client = RegionNetworkFirewallPoliciesClient( + 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/v1/projects/{project}/regions/{region}/firewallPolicies/{resource}/testIamPermissions" + % client.transport._host, + args[1], + ) + + +def test_test_iam_permissions_rest_flattened_error(transport: str = "rest"): + client = RegionNetworkFirewallPoliciesClient( + 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.TestIamPermissionsRegionNetworkFirewallPolicyRequest(), + project="project_value", + region="region_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.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), + transport=transport, + ) + + # It is an error to provide a credentials file and a transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + client_options={"credentials_file": "credentials.json"}, + transport=transport, + ) + + # It is an error to provide an api_key and a transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + options = client_options.ClientOptions() + options.api_key = "api_key" + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + 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 = RegionNetworkFirewallPoliciesClient( + client_options=options, credentials=ga_credentials.AnonymousCredentials() + ) + + # It is an error to provide scopes and a transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + with pytest.raises(ValueError): + client = RegionNetworkFirewallPoliciesClient( + client_options={"scopes": ["1", "2"]}, + transport=transport, + ) + + +def test_transport_instance(): + # A client may be instantiated with a custom transport instance. + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + ) + client = RegionNetworkFirewallPoliciesClient(transport=transport) + assert client.transport is transport + + +@pytest.mark.parametrize( + "transport_class", + [ + transports.RegionNetworkFirewallPoliciesRestTransport, + ], +) +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 = RegionNetworkFirewallPoliciesClient.get_transport_class("rest")( + credentials=ga_credentials.AnonymousCredentials() + ) + assert transport.kind == "rest" + + +def test_add_association_rest_bad_request( + request_type=compute.AddAssociationRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.add_association(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.AddAssociationRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_add_association_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } + request_init["firewall_policy_association_resource"] = { + "attachment_target": "attachment_target_value", + "display_name": "display_name_value", + "firewall_policy_id": "firewall_policy_id_value", + "name": "name_value", + "priority": 898, + "short_name": "short_name_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.AddAssociationRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_association_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[ + "firewall_policy_association_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["firewall_policy_association_resource"][field]) + ): + del request_init["firewall_policy_association_resource"][field][i][ + subfield + ] + else: + del request_init["firewall_policy_association_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.add_association(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_add_association_rest_interceptors(null_interceptor): + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.RegionNetworkFirewallPoliciesRestInterceptor(), + ) + client = RegionNetworkFirewallPoliciesClient(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.RegionNetworkFirewallPoliciesRestInterceptor, + "post_add_association", + ) as post, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_add_association_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_add_association", + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AddAssociationRegionNetworkFirewallPolicyRequest.pb( + compute.AddAssociationRegionNetworkFirewallPolicyRequest() + ) + 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.AddAssociationRegionNetworkFirewallPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.add_association( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_add_rule_rest_bad_request( + request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.add_rule(request) + + +@pytest.mark.parametrize( "request_type", [ - compute.AddAssociationRegionNetworkFirewallPolicyRequest, + compute.AddRuleRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_add_association_rest_call_success(request_type): +def test_add_rule_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6281,20 +7572,76 @@ def test_add_association_rest_call_success(request_type): "region": "sample2", "firewall_policy": "sample3", } - request_init["firewall_policy_association_resource"] = { - "attachment_target": "attachment_target_value", - "display_name": "display_name_value", - "firewall_policy_id": "firewall_policy_id_value", - "name": "name_value", - "short_name": "short_name_value", + request_init["firewall_policy_rule_resource"] = { + "action": "action_value", + "description": "description_value", + "direction": "direction_value", + "disabled": True, + "enable_logging": True, + "kind": "kind_value", + "match": { + "dest_address_groups": [ + "dest_address_groups_value1", + "dest_address_groups_value2", + ], + "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], + "dest_ip_ranges": ["dest_ip_ranges_value1", "dest_ip_ranges_value2"], + "dest_network_context": "dest_network_context_value", + "dest_network_type": "dest_network_type_value", + "dest_region_codes": [ + "dest_region_codes_value1", + "dest_region_codes_value2", + ], + "dest_threat_intelligences": [ + "dest_threat_intelligences_value1", + "dest_threat_intelligences_value2", + ], + "layer4_configs": [ + { + "ip_protocol": "ip_protocol_value", + "ports": ["ports_value1", "ports_value2"], + } + ], + "src_address_groups": [ + "src_address_groups_value1", + "src_address_groups_value2", + ], + "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], + "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], + "src_network_context": "src_network_context_value", + "src_network_type": "src_network_type_value", + "src_networks": ["src_networks_value1", "src_networks_value2"], + "src_region_codes": ["src_region_codes_value1", "src_region_codes_value2"], + "src_secure_tags": [{"name": "name_value", "state": "state_value"}], + "src_threat_intelligences": [ + "src_threat_intelligences_value1", + "src_threat_intelligences_value2", + ], + }, + "priority": 898, + "rule_name": "rule_name_value", + "rule_tuple_count": 1737, + "security_profile_group": "security_profile_group_value", + "target_forwarding_rules": [ + "target_forwarding_rules_value1", + "target_forwarding_rules_value2", + ], + "target_resources": ["target_resources_value1", "target_resources_value2"], + "target_secure_tags": {}, + "target_service_accounts": [ + "target_service_accounts_value1", + "target_service_accounts_value2", + ], + "target_type": "target_type_value", + "tls_inspect": True, } # 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.AddAssociationRegionNetworkFirewallPolicyRequest.meta.fields[ - "firewall_policy_association_resource" + test_field = compute.AddRuleRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_rule_resource" ] def get_message_fields(field): @@ -6324,7 +7671,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[ - "firewall_policy_association_resource" + "firewall_policy_rule_resource" ].items(): # pragma: NO COVER result = None is_repeated = False @@ -6356,15 +7703,13 @@ def get_message_fields(field): if subfield: if field_repeated: for i in range( - 0, len(request_init["firewall_policy_association_resource"][field]) + 0, len(request_init["firewall_policy_rule_resource"][field]) ): - del request_init["firewall_policy_association_resource"][field][i][ + del request_init["firewall_policy_rule_resource"][field][i][ subfield ] else: - del request_init["firewall_policy_association_resource"][field][ - subfield - ] + del request_init["firewall_policy_rule_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -6405,7 +7750,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.add_association(request) + response = client.add_rule(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -6434,7 +7779,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_add_association_rest_interceptors(null_interceptor): +def test_add_rule_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -6447,23 +7792,202 @@ def test_add_association_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_add_association", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_add_association_with_metadata", + "post_add_rule_with_metadata", ) as post_with_metadata, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule" + ) as pre, + ): + pre.assert_not_called() + post.assert_not_called() + post_with_metadata.assert_not_called() + pb_message = compute.AddRuleRegionNetworkFirewallPolicyRequest.pb( + compute.AddRuleRegionNetworkFirewallPolicyRequest() + ) + 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.AddRuleRegionNetworkFirewallPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata + + client.add_rule( + request, + metadata=[ + ("key", "val"), + ("cephalopod", "squid"), + ], + ) + + pre.assert_called_once() + post.assert_called_once() + post_with_metadata.assert_called_once() + + +def test_clone_rules_rest_bad_request( + request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.clone_rules(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.CloneRulesRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_clone_rules_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.clone_rules(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_clone_rules_rest_interceptors(null_interceptor): + transport = transports.RegionNetworkFirewallPoliciesRestTransport( + credentials=ga_credentials.AnonymousCredentials(), + interceptor=None + if null_interceptor + else transports.RegionNetworkFirewallPoliciesRestInterceptor(), + ) + client = RegionNetworkFirewallPoliciesClient(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.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules" + ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_add_association", + "post_clone_rules_with_metadata", + ) as post_with_metadata, + mock.patch.object( + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.AddAssociationRegionNetworkFirewallPolicyRequest.pb( - compute.AddAssociationRegionNetworkFirewallPolicyRequest() + pb_message = compute.CloneRulesRegionNetworkFirewallPolicyRequest.pb( + compute.CloneRulesRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -6478,7 +8002,7 @@ def test_add_association_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.AddAssociationRegionNetworkFirewallPolicyRequest() + request = compute.CloneRulesRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -6487,7 +8011,7 @@ def test_add_association_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.add_association( + client.clone_rules( request, metadata=[ ("key", "val"), @@ -6500,8 +8024,8 @@ def test_add_association_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_add_rule_rest_bad_request( - request_type=compute.AddRuleRegionNetworkFirewallPolicyRequest, +def test_delete_rest_bad_request( + request_type=compute.DeleteRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -6527,17 +8051,17 @@ def test_add_rule_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.add_rule(request) + client.delete(request) @pytest.mark.parametrize( "request_type", [ - compute.AddRuleRegionNetworkFirewallPolicyRequest, + compute.DeleteRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_add_rule_rest_call_success(request_type): +def test_delete_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6548,144 +8072,6 @@ def test_add_rule_rest_call_success(request_type): "region": "sample2", "firewall_policy": "sample3", } - request_init["firewall_policy_rule_resource"] = { - "action": "action_value", - "description": "description_value", - "direction": "direction_value", - "disabled": True, - "enable_logging": True, - "kind": "kind_value", - "match": { - "dest_address_groups": [ - "dest_address_groups_value1", - "dest_address_groups_value2", - ], - "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], - "dest_ip_ranges": ["dest_ip_ranges_value1", "dest_ip_ranges_value2"], - "dest_network_context": "dest_network_context_value", - "dest_network_type": "dest_network_type_value", - "dest_region_codes": [ - "dest_region_codes_value1", - "dest_region_codes_value2", - ], - "dest_threat_intelligences": [ - "dest_threat_intelligences_value1", - "dest_threat_intelligences_value2", - ], - "layer4_configs": [ - { - "ip_protocol": "ip_protocol_value", - "ports": ["ports_value1", "ports_value2"], - } - ], - "src_address_groups": [ - "src_address_groups_value1", - "src_address_groups_value2", - ], - "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], - "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], - "src_network_context": "src_network_context_value", - "src_network_type": "src_network_type_value", - "src_networks": ["src_networks_value1", "src_networks_value2"], - "src_region_codes": ["src_region_codes_value1", "src_region_codes_value2"], - "src_secure_tags": [{"name": "name_value", "state": "state_value"}], - "src_threat_intelligences": [ - "src_threat_intelligences_value1", - "src_threat_intelligences_value2", - ], - }, - "priority": 898, - "rule_name": "rule_name_value", - "rule_tuple_count": 1737, - "security_profile_group": "security_profile_group_value", - "target_forwarding_rules": [ - "target_forwarding_rules_value1", - "target_forwarding_rules_value2", - ], - "target_resources": ["target_resources_value1", "target_resources_value2"], - "target_secure_tags": {}, - "target_service_accounts": [ - "target_service_accounts_value1", - "target_service_accounts_value2", - ], - "target_type": "target_type_value", - "tls_inspect": True, - } - # 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.AddRuleRegionNetworkFirewallPolicyRequest.meta.fields[ - "firewall_policy_rule_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[ - "firewall_policy_rule_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["firewall_policy_rule_resource"][field]) - ): - del request_init["firewall_policy_rule_resource"][field][i][ - subfield - ] - else: - del request_init["firewall_policy_rule_resource"][field][subfield] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -6726,7 +8112,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.add_rule(request) + response = client.delete(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -6755,7 +8141,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_add_rule_rest_interceptors(null_interceptor): +def test_delete_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -6768,21 +8154,21 @@ def test_add_rule_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_add_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_add_rule_with_metadata", + "post_delete_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_add_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.AddRuleRegionNetworkFirewallPolicyRequest.pb( - compute.AddRuleRegionNetworkFirewallPolicyRequest() + pb_message = compute.DeleteRegionNetworkFirewallPolicyRequest.pb( + compute.DeleteRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -6797,7 +8183,7 @@ def test_add_rule_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.AddRuleRegionNetworkFirewallPolicyRequest() + request = compute.DeleteRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -6806,7 +8192,7 @@ def test_add_rule_rest_interceptors(null_interceptor): post.return_value = compute.Operation() post_with_metadata.return_value = compute.Operation(), metadata - client.add_rule( + client.delete( request, metadata=[ ("key", "val"), @@ -6819,8 +8205,8 @@ def test_add_rule_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_clone_rules_rest_bad_request( - request_type=compute.CloneRulesRegionNetworkFirewallPolicyRequest, +def test_get_rest_bad_request( + request_type=compute.GetRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -6846,17 +8232,17 @@ def test_clone_rules_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.clone_rules(request) + client.get(request) @pytest.mark.parametrize( "request_type", [ - compute.CloneRulesRegionNetworkFirewallPolicyRequest, + compute.GetRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_clone_rules_rest_call_success(request_type): +def test_get_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -6872,29 +8258,21 @@ def test_clone_rules_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.Operation( - client_operation_id="client_operation_id_value", + return_value = compute.FirewallPolicy( 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, + display_name="display_name_value", + fingerprint="fingerprint_value", 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, + parent="parent_value", + policy_type="policy_type_value", region="region_value", + rule_tuple_count=1737, 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", + self_link_with_id="self_link_with_id_value", + short_name="short_name_value", ) # Wrap the value into a proper Response obj @@ -6902,41 +8280,33 @@ def test_clone_rules_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.FirewallPolicy.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.clone_rules(request) + response = client.get(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 isinstance(response, compute.FirewallPolicy) 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.display_name == "display_name_value" + assert response.fingerprint == "fingerprint_value" 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.parent == "parent_value" + assert response.policy_type == "policy_type_value" assert response.region == "region_value" + assert response.rule_tuple_count == 1737 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" + assert response.self_link_with_id == "self_link_with_id_value" + assert response.short_name == "short_name_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_clone_rules_rest_interceptors(null_interceptor): +def test_get_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -6949,21 +8319,21 @@ def test_clone_rules_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_clone_rules" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_clone_rules_with_metadata", + "post_get_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_clone_rules" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.CloneRulesRegionNetworkFirewallPolicyRequest.pb( - compute.CloneRulesRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetRegionNetworkFirewallPolicyRequest.pb( + compute.GetRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -6975,19 +8345,19 @@ def test_clone_rules_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.Operation.to_json(compute.Operation()) + return_value = compute.FirewallPolicy.to_json(compute.FirewallPolicy()) req.return_value.content = return_value - request = compute.CloneRulesRegionNetworkFirewallPolicyRequest() + request = compute.GetRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.Operation() - post_with_metadata.return_value = compute.Operation(), metadata + post.return_value = compute.FirewallPolicy() + post_with_metadata.return_value = compute.FirewallPolicy(), metadata - client.clone_rules( + client.get( request, metadata=[ ("key", "val"), @@ -7000,8 +8370,8 @@ def test_clone_rules_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_delete_rest_bad_request( - request_type=compute.DeleteRegionNetworkFirewallPolicyRequest, +def test_get_association_rest_bad_request( + request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -7027,17 +8397,17 @@ def test_delete_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.delete(request) + client.get_association(request) @pytest.mark.parametrize( "request_type", [ - compute.DeleteRegionNetworkFirewallPolicyRequest, + compute.GetAssociationRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_delete_rest_call_success(request_type): +def test_get_association_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -7053,29 +8423,13 @@ def test_delete_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.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", + return_value = compute.FirewallPolicyAssociation( + attachment_target="attachment_target_value", + display_name="display_name_value", + firewall_policy_id="firewall_policy_id_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", + priority=898, + short_name="short_name_value", ) # Wrap the value into a proper Response obj @@ -7083,41 +8437,25 @@ def test_delete_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Operation.pb(return_value) + return_value = compute.FirewallPolicyAssociation.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) + response = client.get_association(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 isinstance(response, compute.FirewallPolicyAssociation) + assert response.attachment_target == "attachment_target_value" + assert response.display_name == "display_name_value" + assert response.firewall_policy_id == "firewall_policy_id_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" + assert response.priority == 898 + assert response.short_name == "short_name_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_delete_rest_interceptors(null_interceptor): +def test_get_association_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7130,21 +8468,23 @@ def test_delete_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_delete" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_get_association", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_delete_with_metadata", + "post_get_association_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_delete" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_get_association", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.DeleteRegionNetworkFirewallPolicyRequest.pb( - compute.DeleteRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetAssociationRegionNetworkFirewallPolicyRequest.pb( + compute.GetAssociationRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7156,19 +8496,21 @@ def test_delete_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.Operation.to_json(compute.Operation()) + return_value = compute.FirewallPolicyAssociation.to_json( + compute.FirewallPolicyAssociation() + ) req.return_value.content = return_value - request = compute.DeleteRegionNetworkFirewallPolicyRequest() + request = compute.GetAssociationRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.Operation() - post_with_metadata.return_value = compute.Operation(), metadata + post.return_value = compute.FirewallPolicyAssociation() + post_with_metadata.return_value = compute.FirewallPolicyAssociation(), metadata - client.delete( + client.get_association( request, metadata=[ ("key", "val"), @@ -7181,18 +8523,14 @@ def test_delete_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_rest_bad_request( - request_type=compute.GetRegionNetworkFirewallPolicyRequest, +def test_get_effective_firewalls_rest_bad_request( + request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "sample2"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7208,47 +8546,30 @@ def test_get_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.get(request) + client.get_effective_firewalls(request) @pytest.mark.parametrize( "request_type", [ - compute.GetRegionNetworkFirewallPolicyRequest, + compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_get_rest_call_success(request_type): +def test_get_effective_firewalls_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "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.FirewallPolicy( - creation_timestamp="creation_timestamp_value", - description="description_value", - display_name="display_name_value", - fingerprint="fingerprint_value", - id=205, - kind="kind_value", - name="name_value", - parent="parent_value", - policy_type="policy_type_value", - region="region_value", - rule_tuple_count=1737, - self_link="self_link_value", - self_link_with_id="self_link_with_id_value", - short_name="short_name_value", + return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() ) # Wrap the value into a proper Response obj @@ -7256,33 +8577,25 @@ def test_get_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicy.pb(return_value) + return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.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.get_effective_firewalls(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.FirewallPolicy) - assert response.creation_timestamp == "creation_timestamp_value" - assert response.description == "description_value" - assert response.display_name == "display_name_value" - assert response.fingerprint == "fingerprint_value" - assert response.id == 205 - assert response.kind == "kind_value" - assert response.name == "name_value" - assert response.parent == "parent_value" - assert response.policy_type == "policy_type_value" - assert response.region == "region_value" - assert response.rule_tuple_count == 1737 - assert response.self_link == "self_link_value" - assert response.self_link_with_id == "self_link_with_id_value" - assert response.short_name == "short_name_value" + assert isinstance( + response, compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse + ) @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_rest_interceptors(null_interceptor): +def test_get_effective_firewalls_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7295,21 +8608,23 @@ def test_get_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_get_effective_firewalls", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_with_metadata", + "post_get_effective_firewalls_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_get_effective_firewalls", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetRegionNetworkFirewallPolicyRequest.pb( - compute.GetRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest.pb( + compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7321,19 +8636,28 @@ def test_get_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.FirewallPolicy.to_json(compute.FirewallPolicy()) + return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + ) + ) req.return_value.content = return_value - request = compute.GetRegionNetworkFirewallPolicyRequest() + request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicy() - post_with_metadata.return_value = compute.FirewallPolicy(), metadata + post.return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + ) + post_with_metadata.return_value = ( + compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse(), + metadata, + ) - client.get( + client.get_effective_firewalls( request, metadata=[ ("key", "val"), @@ -7346,18 +8670,14 @@ def test_get_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_association_rest_bad_request( - request_type=compute.GetAssociationRegionNetworkFirewallPolicyRequest, +def test_get_iam_policy_rest_bad_request( + request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + 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. @@ -7373,38 +8693,31 @@ def test_get_association_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.get_association(request) + client.get_iam_policy(request) @pytest.mark.parametrize( "request_type", [ - compute.GetAssociationRegionNetworkFirewallPolicyRequest, + compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_get_association_rest_call_success(request_type): +def test_get_iam_policy_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "sample2", "resource": "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.FirewallPolicyAssociation( - attachment_target="attachment_target_value", - display_name="display_name_value", - firewall_policy_id="firewall_policy_id_value", - name="name_value", - short_name="short_name_value", + return_value = compute.Policy( + etag="etag_value", + version=774, ) # Wrap the value into a proper Response obj @@ -7412,24 +8725,21 @@ def test_get_association_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicyAssociation.pb(return_value) + 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_association(request) + response = client.get_iam_policy(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.FirewallPolicyAssociation) - assert response.attachment_target == "attachment_target_value" - assert response.display_name == "display_name_value" - assert response.firewall_policy_id == "firewall_policy_id_value" - assert response.name == "name_value" - assert response.short_name == "short_name_value" + assert isinstance(response, compute.Policy) + assert response.etag == "etag_value" + assert response.version == 774 @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_association_rest_interceptors(null_interceptor): +def test_get_iam_policy_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7443,22 +8753,22 @@ def test_get_association_rest_interceptors(null_interceptor): mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_association", + "post_get_iam_policy", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_association_with_metadata", + "post_get_iam_policy_with_metadata", ) as post_with_metadata, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_get_association", + "pre_get_iam_policy", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetAssociationRegionNetworkFirewallPolicyRequest.pb( - compute.GetAssociationRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest.pb( + compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7470,21 +8780,19 @@ def test_get_association_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.FirewallPolicyAssociation.to_json( - compute.FirewallPolicyAssociation() - ) + return_value = compute.Policy.to_json(compute.Policy()) req.return_value.content = return_value - request = compute.GetAssociationRegionNetworkFirewallPolicyRequest() + request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicyAssociation() - post_with_metadata.return_value = compute.FirewallPolicyAssociation(), metadata + post.return_value = compute.Policy() + post_with_metadata.return_value = compute.Policy(), metadata - client.get_association( + client.get_iam_policy( request, metadata=[ ("key", "val"), @@ -7497,14 +8805,18 @@ def test_get_association_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_effective_firewalls_rest_bad_request( - request_type=compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, +def test_get_rule_rest_bad_request( + request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7520,30 +8832,48 @@ def test_get_effective_firewalls_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.get_effective_firewalls(request) + client.get_rule(request) @pytest.mark.parametrize( "request_type", [ - compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest, + compute.GetRuleRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_get_effective_firewalls_rest_call_success(request_type): +def test_get_rule_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "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.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() + return_value = compute.FirewallPolicyRule( + action="action_value", + description="description_value", + direction="direction_value", + disabled=True, + enable_logging=True, + kind="kind_value", + priority=898, + rule_name="rule_name_value", + rule_tuple_count=1737, + security_profile_group="security_profile_group_value", + target_forwarding_rules=["target_forwarding_rules_value"], + target_resources=["target_resources_value"], + target_service_accounts=["target_service_accounts_value"], + target_type="target_type_value", + tls_inspect=True, ) # Wrap the value into a proper Response obj @@ -7551,25 +8881,34 @@ def test_get_effective_firewalls_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = ( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.pb( - return_value - ) - ) + return_value = compute.FirewallPolicyRule.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_effective_firewalls(request) + response = client.get_rule(request) # Establish that the response is the type that we expect. - assert isinstance( - response, compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse - ) + assert isinstance(response, compute.FirewallPolicyRule) + assert response.action == "action_value" + assert response.description == "description_value" + assert response.direction == "direction_value" + assert response.disabled is True + assert response.enable_logging is True + assert response.kind == "kind_value" + assert response.priority == 898 + assert response.rule_name == "rule_name_value" + assert response.rule_tuple_count == 1737 + assert response.security_profile_group == "security_profile_group_value" + assert response.target_forwarding_rules == ["target_forwarding_rules_value"] + assert response.target_resources == ["target_resources_value"] + assert response.target_service_accounts == ["target_service_accounts_value"] + assert response.target_type == "target_type_value" + assert response.tls_inspect is True @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_effective_firewalls_rest_interceptors(null_interceptor): +def test_get_rule_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7582,23 +8921,21 @@ def test_get_effective_firewalls_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_effective_firewalls", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_rule" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_effective_firewalls_with_metadata", + "post_get_rule_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_get_effective_firewalls", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_rule" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest.pb( - compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() + pb_message = compute.GetRuleRegionNetworkFirewallPolicyRequest.pb( + compute.GetRuleRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7610,88 +8947,271 @@ def test_get_effective_firewalls_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.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse.to_json( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() - ) - ) + return_value = compute.FirewallPolicyRule.to_json(compute.FirewallPolicyRule()) req.return_value.content = return_value - request = compute.GetEffectiveFirewallsRegionNetworkFirewallPolicyRequest() - metadata = [ - ("key", "val"), - ("cephalopod", "squid"), - ] - pre.return_value = request, metadata - post.return_value = ( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse() - ) - post_with_metadata.return_value = ( - compute.RegionNetworkFirewallPoliciesGetEffectiveFirewallsResponse(), - metadata, - ) + request = compute.GetRuleRegionNetworkFirewallPolicyRequest() + metadata = [ + ("key", "val"), + ("cephalopod", "squid"), + ] + pre.return_value = request, metadata + post.return_value = compute.FirewallPolicyRule() + post_with_metadata.return_value = compute.FirewallPolicyRule(), metadata + + client.get_rule( + 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.InsertRegionNetworkFirewallPolicyRequest, +): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "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.insert(request) + + +@pytest.mark.parametrize( + "request_type", + [ + compute.InsertRegionNetworkFirewallPolicyRequest, + dict, + ], +) +def test_insert_rest_call_success(request_type): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport="rest" + ) + + # send a request that will satisfy transcoding + request_init = {"project": "sample1", "region": "sample2"} + request_init["firewall_policy_resource"] = { + "associations": [ + { + "attachment_target": "attachment_target_value", + "display_name": "display_name_value", + "firewall_policy_id": "firewall_policy_id_value", + "name": "name_value", + "priority": 898, + "short_name": "short_name_value", + } + ], + "creation_timestamp": "creation_timestamp_value", + "description": "description_value", + "display_name": "display_name_value", + "fingerprint": "fingerprint_value", + "id": 205, + "kind": "kind_value", + "name": "name_value", + "packet_mirroring_rules": [ + { + "action": "action_value", + "description": "description_value", + "direction": "direction_value", + "disabled": True, + "enable_logging": True, + "kind": "kind_value", + "match": { + "dest_address_groups": [ + "dest_address_groups_value1", + "dest_address_groups_value2", + ], + "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], + "dest_ip_ranges": [ + "dest_ip_ranges_value1", + "dest_ip_ranges_value2", + ], + "dest_network_context": "dest_network_context_value", + "dest_network_type": "dest_network_type_value", + "dest_region_codes": [ + "dest_region_codes_value1", + "dest_region_codes_value2", + ], + "dest_threat_intelligences": [ + "dest_threat_intelligences_value1", + "dest_threat_intelligences_value2", + ], + "layer4_configs": [ + { + "ip_protocol": "ip_protocol_value", + "ports": ["ports_value1", "ports_value2"], + } + ], + "src_address_groups": [ + "src_address_groups_value1", + "src_address_groups_value2", + ], + "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], + "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], + "src_network_context": "src_network_context_value", + "src_network_type": "src_network_type_value", + "src_networks": ["src_networks_value1", "src_networks_value2"], + "src_region_codes": [ + "src_region_codes_value1", + "src_region_codes_value2", + ], + "src_secure_tags": [{"name": "name_value", "state": "state_value"}], + "src_threat_intelligences": [ + "src_threat_intelligences_value1", + "src_threat_intelligences_value2", + ], + }, + "priority": 898, + "rule_name": "rule_name_value", + "rule_tuple_count": 1737, + "security_profile_group": "security_profile_group_value", + "target_forwarding_rules": [ + "target_forwarding_rules_value1", + "target_forwarding_rules_value2", + ], + "target_resources": [ + "target_resources_value1", + "target_resources_value2", + ], + "target_secure_tags": {}, + "target_service_accounts": [ + "target_service_accounts_value1", + "target_service_accounts_value2", + ], + "target_type": "target_type_value", + "tls_inspect": True, + } + ], + "parent": "parent_value", + "policy_type": "policy_type_value", + "region": "region_value", + "rule_tuple_count": 1737, + "rules": {}, + "self_link": "self_link_value", + "self_link_with_id": "self_link_with_id_value", + "short_name": "short_name_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.InsertRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_resource" + ] - client.get_effective_firewalls( - request, - metadata=[ - ("key", "val"), - ("cephalopod", "squid"), - ], - ) + 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 = [] - pre.assert_called_once() - post.assert_called_once() - post_with_metadata.assert_called_once() + 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 -def test_get_iam_policy_rest_bad_request( - request_type=compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, -): - client = RegionNetworkFirewallPoliciesClient( - 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) + runtime_nested_fields = [ + (field.name, nested_field.name) + for field in get_message_fields(test_field) + for nested_field in get_message_fields(field) + ] - # 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) + 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[ + "firewall_policy_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 -@pytest.mark.parametrize( - "request_type", - [ - compute.GetIamPolicyRegionNetworkFirewallPolicyRequest, - dict, - ], -) -def test_get_iam_policy_rest_call_success(request_type): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) + 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, + } + ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2", "resource": "sample3"} + # 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["firewall_policy_resource"][field])): + del request_init["firewall_policy_resource"][field][i][subfield] + else: + del request_init["firewall_policy_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", - version=774, + 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 @@ -7699,21 +9219,41 @@ def test_get_iam_policy_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.Policy.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_iam_policy(request) + response = client.insert(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.Policy) - assert response.etag == "etag_value" - assert response.version == 774 + 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_get_iam_policy_rest_interceptors(null_interceptor): +def test_insert_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7726,23 +9266,21 @@ def test_get_iam_policy_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_iam_policy", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_iam_policy_with_metadata", + "post_insert_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "pre_get_iam_policy", + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest.pb( - compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() + pb_message = compute.InsertRegionNetworkFirewallPolicyRequest.pb( + compute.InsertRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -7754,19 +9292,19 @@ def test_get_iam_policy_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.Policy.to_json(compute.Policy()) + return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.GetIamPolicyRegionNetworkFirewallPolicyRequest() + request = compute.InsertRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.Policy() - post_with_metadata.return_value = compute.Policy(), metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata - client.get_iam_policy( + client.insert( request, metadata=[ ("key", "val"), @@ -7779,18 +9317,14 @@ def test_get_iam_policy_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_get_rule_rest_bad_request( - request_type=compute.GetRuleRegionNetworkFirewallPolicyRequest, +def test_list_rest_bad_request( + request_type=compute.ListRegionNetworkFirewallPoliciesRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "sample2"} request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7806,48 +9340,32 @@ def test_get_rule_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.get_rule(request) + client.list(request) @pytest.mark.parametrize( "request_type", [ - compute.GetRuleRegionNetworkFirewallPolicyRequest, + compute.ListRegionNetworkFirewallPoliciesRequest, dict, ], ) -def test_get_rule_rest_call_success(request_type): +def test_list_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = { - "project": "sample1", - "region": "sample2", - "firewall_policy": "sample3", - } + request_init = {"project": "sample1", "region": "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.FirewallPolicyRule( - action="action_value", - description="description_value", - direction="direction_value", - disabled=True, - enable_logging=True, + return_value = compute.FirewallPolicyList( + id="id_value", kind="kind_value", - priority=898, - rule_name="rule_name_value", - rule_tuple_count=1737, - security_profile_group="security_profile_group_value", - target_forwarding_rules=["target_forwarding_rules_value"], - target_resources=["target_resources_value"], - target_service_accounts=["target_service_accounts_value"], - target_type="target_type_value", - tls_inspect=True, + next_page_token="next_page_token_value", ) # Wrap the value into a proper Response obj @@ -7855,34 +9373,22 @@ def test_get_rule_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicyRule.pb(return_value) + return_value = compute.FirewallPolicyList.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_rule(request) + response = client.list(request) # Establish that the response is the type that we expect. - assert isinstance(response, compute.FirewallPolicyRule) - assert response.action == "action_value" - assert response.description == "description_value" - assert response.direction == "direction_value" - assert response.disabled is True - assert response.enable_logging is True + assert isinstance(response, pagers.ListPager) + assert response.id == "id_value" assert response.kind == "kind_value" - assert response.priority == 898 - assert response.rule_name == "rule_name_value" - assert response.rule_tuple_count == 1737 - assert response.security_profile_group == "security_profile_group_value" - assert response.target_forwarding_rules == ["target_forwarding_rules_value"] - assert response.target_resources == ["target_resources_value"] - assert response.target_service_accounts == ["target_service_accounts_value"] - assert response.target_type == "target_type_value" - assert response.tls_inspect is True + assert response.next_page_token == "next_page_token_value" @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_get_rule_rest_interceptors(null_interceptor): +def test_list_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -7895,21 +9401,21 @@ def test_get_rule_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_get_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_list" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_get_rule_with_metadata", + "post_list_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_get_rule" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_list" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.GetRuleRegionNetworkFirewallPolicyRequest.pb( - compute.GetRuleRegionNetworkFirewallPolicyRequest() + pb_message = compute.ListRegionNetworkFirewallPoliciesRequest.pb( + compute.ListRegionNetworkFirewallPoliciesRequest() ) transcode.return_value = { "method": "post", @@ -7921,19 +9427,19 @@ def test_get_rule_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.FirewallPolicyRule.to_json(compute.FirewallPolicyRule()) + return_value = compute.FirewallPolicyList.to_json(compute.FirewallPolicyList()) req.return_value.content = return_value - request = compute.GetRuleRegionNetworkFirewallPolicyRequest() + request = compute.ListRegionNetworkFirewallPoliciesRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicyRule() - post_with_metadata.return_value = compute.FirewallPolicyRule(), metadata + post.return_value = compute.FirewallPolicyList() + post_with_metadata.return_value = compute.FirewallPolicyList(), metadata - client.get_rule( + client.list( request, metadata=[ ("key", "val"), @@ -7946,14 +9452,18 @@ def test_get_rule_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_insert_rest_bad_request( - request_type=compute.InsertRegionNetworkFirewallPolicyRequest, +def test_patch_rest_bad_request( + request_type=compute.PatchRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } request = request_type(**request_init) # Mock the http request call within the method and fake a BadRequest error. @@ -7969,23 +9479,27 @@ def test_insert_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.insert(request) + client.patch(request) @pytest.mark.parametrize( "request_type", [ - compute.InsertRegionNetworkFirewallPolicyRequest, + compute.PatchRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_insert_rest_call_success(request_type): +def test_patch_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + request_init = { + "project": "sample1", + "region": "sample2", + "firewall_policy": "sample3", + } request_init["firewall_policy_resource"] = { "associations": [ { @@ -7993,6 +9507,7 @@ def test_insert_rest_call_success(request_type): "display_name": "display_name_value", "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", + "priority": 898, "short_name": "short_name_value", } ], @@ -8091,7 +9606,7 @@ def test_insert_rest_call_success(request_type): # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.InsertRegionNetworkFirewallPolicyRequest.meta.fields[ + test_field = compute.PatchRegionNetworkFirewallPolicyRequest.meta.fields[ "firewall_policy_resource" ] @@ -8129,216 +9644,62 @@ def get_message_fields(field): # 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["firewall_policy_resource"][field])): - del request_init["firewall_policy_resource"][field][i][subfield] - else: - del request_init["firewall_policy_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.RegionNetworkFirewallPoliciesRestTransport( - credentials=ga_credentials.AnonymousCredentials(), - interceptor=None - if null_interceptor - else transports.RegionNetworkFirewallPoliciesRestInterceptor(), - ) - client = RegionNetworkFirewallPoliciesClient(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.RegionNetworkFirewallPoliciesRestInterceptor, "post_insert" - ) as post, - mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_insert_with_metadata", - ) as post_with_metadata, - mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_insert" - ) as pre, - ): - pre.assert_not_called() - post.assert_not_called() - post_with_metadata.assert_not_called() - pb_message = compute.InsertRegionNetworkFirewallPolicyRequest.pb( - compute.InsertRegionNetworkFirewallPolicyRequest() - ) - 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.InsertRegionNetworkFirewallPolicyRequest() - 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.ListRegionNetworkFirewallPoliciesRequest, -): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "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.list(request) - - -@pytest.mark.parametrize( - "request_type", - [ - compute.ListRegionNetworkFirewallPoliciesRequest, - dict, - ], -) -def test_list_rest_call_success(request_type): - client = RegionNetworkFirewallPoliciesClient( - credentials=ga_credentials.AnonymousCredentials(), transport="rest" - ) + result = value[0] + # For fields where the type is another message + if isinstance(value, dict): + result = value - # send a request that will satisfy transcoding - request_init = {"project": "sample1", "region": "sample2"} + 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["firewall_policy_resource"][field])): + del request_init["firewall_policy_resource"][field][i][subfield] + else: + del request_init["firewall_policy_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.FirewallPolicyList( - id="id_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", - next_page_token="next_page_token_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 @@ -8346,22 +9707,41 @@ def test_list_rest_call_success(request_type): response_value.status_code = 200 # Convert return value to protobuf type - return_value = compute.FirewallPolicyList.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.patch(request) # Establish that the response is the type that we expect. - assert isinstance(response, pagers.ListPager) - assert response.id == "id_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.next_page_token == "next_page_token_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_list_rest_interceptors(null_interceptor): +def test_patch_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -8374,21 +9754,21 @@ def test_list_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_list" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch" ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_list_with_metadata", + "post_patch_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_list" + transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch" ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.ListRegionNetworkFirewallPoliciesRequest.pb( - compute.ListRegionNetworkFirewallPoliciesRequest() + pb_message = compute.PatchRegionNetworkFirewallPolicyRequest.pb( + compute.PatchRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -8400,19 +9780,19 @@ 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.FirewallPolicyList.to_json(compute.FirewallPolicyList()) + return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.ListRegionNetworkFirewallPoliciesRequest() + request = compute.PatchRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), ] pre.return_value = request, metadata - post.return_value = compute.FirewallPolicyList() - post_with_metadata.return_value = compute.FirewallPolicyList(), metadata + post.return_value = compute.Operation() + post_with_metadata.return_value = compute.Operation(), metadata - client.list( + client.patch( request, metadata=[ ("key", "val"), @@ -8425,8 +9805,8 @@ def test_list_rest_interceptors(null_interceptor): post_with_metadata.assert_called_once() -def test_patch_rest_bad_request( - request_type=compute.PatchRegionNetworkFirewallPolicyRequest, +def test_patch_association_rest_bad_request( + request_type=compute.PatchAssociationRegionNetworkFirewallPolicyRequest, ): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" @@ -8452,17 +9832,17 @@ def test_patch_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.patch(request) + client.patch_association(request) @pytest.mark.parametrize( "request_type", [ - compute.PatchRegionNetworkFirewallPolicyRequest, + compute.PatchAssociationRegionNetworkFirewallPolicyRequest, dict, ], ) -def test_patch_rest_call_success(request_type): +def test_patch_association_rest_call_success(request_type): client = RegionNetworkFirewallPoliciesClient( credentials=ga_credentials.AnonymousCredentials(), transport="rest" ) @@ -8473,104 +9853,12 @@ def test_patch_rest_call_success(request_type): "region": "sample2", "firewall_policy": "sample3", } - request_init["firewall_policy_resource"] = { - "associations": [ - { - "attachment_target": "attachment_target_value", - "display_name": "display_name_value", - "firewall_policy_id": "firewall_policy_id_value", - "name": "name_value", - "short_name": "short_name_value", - } - ], - "creation_timestamp": "creation_timestamp_value", - "description": "description_value", + request_init["firewall_policy_association_resource"] = { + "attachment_target": "attachment_target_value", "display_name": "display_name_value", - "fingerprint": "fingerprint_value", - "id": 205, - "kind": "kind_value", + "firewall_policy_id": "firewall_policy_id_value", "name": "name_value", - "packet_mirroring_rules": [ - { - "action": "action_value", - "description": "description_value", - "direction": "direction_value", - "disabled": True, - "enable_logging": True, - "kind": "kind_value", - "match": { - "dest_address_groups": [ - "dest_address_groups_value1", - "dest_address_groups_value2", - ], - "dest_fqdns": ["dest_fqdns_value1", "dest_fqdns_value2"], - "dest_ip_ranges": [ - "dest_ip_ranges_value1", - "dest_ip_ranges_value2", - ], - "dest_network_context": "dest_network_context_value", - "dest_network_type": "dest_network_type_value", - "dest_region_codes": [ - "dest_region_codes_value1", - "dest_region_codes_value2", - ], - "dest_threat_intelligences": [ - "dest_threat_intelligences_value1", - "dest_threat_intelligences_value2", - ], - "layer4_configs": [ - { - "ip_protocol": "ip_protocol_value", - "ports": ["ports_value1", "ports_value2"], - } - ], - "src_address_groups": [ - "src_address_groups_value1", - "src_address_groups_value2", - ], - "src_fqdns": ["src_fqdns_value1", "src_fqdns_value2"], - "src_ip_ranges": ["src_ip_ranges_value1", "src_ip_ranges_value2"], - "src_network_context": "src_network_context_value", - "src_network_type": "src_network_type_value", - "src_networks": ["src_networks_value1", "src_networks_value2"], - "src_region_codes": [ - "src_region_codes_value1", - "src_region_codes_value2", - ], - "src_secure_tags": [{"name": "name_value", "state": "state_value"}], - "src_threat_intelligences": [ - "src_threat_intelligences_value1", - "src_threat_intelligences_value2", - ], - }, - "priority": 898, - "rule_name": "rule_name_value", - "rule_tuple_count": 1737, - "security_profile_group": "security_profile_group_value", - "target_forwarding_rules": [ - "target_forwarding_rules_value1", - "target_forwarding_rules_value2", - ], - "target_resources": [ - "target_resources_value1", - "target_resources_value2", - ], - "target_secure_tags": {}, - "target_service_accounts": [ - "target_service_accounts_value1", - "target_service_accounts_value2", - ], - "target_type": "target_type_value", - "tls_inspect": True, - } - ], - "parent": "parent_value", - "policy_type": "policy_type_value", - "region": "region_value", - "rule_tuple_count": 1737, - "rules": {}, - "self_link": "self_link_value", - "self_link_with_id": "self_link_with_id_value", + "priority": 898, "short_name": "short_name_value", } # The version of a generated dependency at test runtime may differ from the version used during generation. @@ -8578,8 +9866,8 @@ def test_patch_rest_call_success(request_type): # See https://github.com/googleapis/gapic-generator-python/issues/1748 # Determine if the message type is proto-plus or protobuf - test_field = compute.PatchRegionNetworkFirewallPolicyRequest.meta.fields[ - "firewall_policy_resource" + test_field = compute.PatchAssociationRegionNetworkFirewallPolicyRequest.meta.fields[ + "firewall_policy_association_resource" ] def get_message_fields(field): @@ -8609,7 +9897,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[ - "firewall_policy_resource" + "firewall_policy_association_resource" ].items(): # pragma: NO COVER result = None is_repeated = False @@ -8640,10 +9928,16 @@ def get_message_fields(field): subfield = subfield_to_delete.get("subfield") if subfield: if field_repeated: - for i in range(0, len(request_init["firewall_policy_resource"][field])): - del request_init["firewall_policy_resource"][field][i][subfield] + for i in range( + 0, len(request_init["firewall_policy_association_resource"][field]) + ): + del request_init["firewall_policy_association_resource"][field][i][ + subfield + ] else: - del request_init["firewall_policy_resource"][field][subfield] + del request_init["firewall_policy_association_resource"][field][ + subfield + ] request = request_type(**request_init) # Mock the http request call within the method and fake a response. @@ -8684,7 +9978,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_association(request) # Establish that the response is the type that we expect. assert isinstance(response, extended_operation.ExtendedOperation) @@ -8713,7 +10007,7 @@ def get_message_fields(field): @pytest.mark.parametrize("null_interceptor", [True, False]) -def test_patch_rest_interceptors(null_interceptor): +def test_patch_association_rest_interceptors(null_interceptor): transport = transports.RegionNetworkFirewallPoliciesRestTransport( credentials=ga_credentials.AnonymousCredentials(), interceptor=None @@ -8726,21 +10020,23 @@ def test_patch_rest_interceptors(null_interceptor): mock.patch.object(type(client.transport._session), "request") as req, mock.patch.object(path_template, "transcode") as transcode, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "post_patch" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "post_patch_association", ) as post, mock.patch.object( transports.RegionNetworkFirewallPoliciesRestInterceptor, - "post_patch_with_metadata", + "post_patch_association_with_metadata", ) as post_with_metadata, mock.patch.object( - transports.RegionNetworkFirewallPoliciesRestInterceptor, "pre_patch" + transports.RegionNetworkFirewallPoliciesRestInterceptor, + "pre_patch_association", ) as pre, ): pre.assert_not_called() post.assert_not_called() post_with_metadata.assert_not_called() - pb_message = compute.PatchRegionNetworkFirewallPolicyRequest.pb( - compute.PatchRegionNetworkFirewallPolicyRequest() + pb_message = compute.PatchAssociationRegionNetworkFirewallPolicyRequest.pb( + compute.PatchAssociationRegionNetworkFirewallPolicyRequest() ) transcode.return_value = { "method": "post", @@ -8755,7 +10051,7 @@ def test_patch_rest_interceptors(null_interceptor): return_value = compute.Operation.to_json(compute.Operation()) req.return_value.content = return_value - request = compute.PatchRegionNetworkFirewallPolicyRequest() + request = compute.PatchAssociationRegionNetworkFirewallPolicyRequest() metadata = [ ("key", "val"), ("cephalopod", "squid"), @@ -8764,7 +10060,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_association( request, metadata=[ ("key", "val"), @@ -10156,6 +11452,27 @@ 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_association_unary_empty_call_rest(): + client = RegionNetworkFirewallPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), + transport="rest", + ) + + # Mock the actual call, and fake the request. + with mock.patch.object( + type(client.transport.patch_association), "__call__" + ) as call: + client.patch_association_unary(request=None) + + # Establish that the underlying stub method was called. + call.assert_called() + _, args, _ = call.mock_calls[0] + request_msg = compute.PatchAssociationRegionNetworkFirewallPolicyRequest() + 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_rule_unary_empty_call_rest(): @@ -10289,6 +11606,7 @@ def test_region_network_firewall_policies_base_transport(): "insert", "list", "patch", + "patch_association", "patch_rule", "remove_association", "remove_rule", @@ -10475,6 +11793,9 @@ def test_region_network_firewall_policies_client_transport_session_collision( session1 = client1.transport.patch._session session2 = client2.transport.patch._session assert session1 != session2 + session1 = client1.transport.patch_association._session + session2 = client2.transport.patch_association._session + assert session1 != session2 session1 = client1.transport.patch_rule._session session2 = client2.transport.patch_rule._session assert session1 != session2 diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py index c5350184bfa1..011a6bb7eb27 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_notification_endpoints.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -175,6 +183,208 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.NotificationEndpointAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.NotificationEndpoint() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.NotificationEndpointList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionNotificationEndpointsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1012,7 +1222,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2220,7 +2429,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py index dfc1d137d3d1..9962d6270093 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteRegionOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_wait_api_version_header(transport_name): + client = RegionOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.wait), "__call__") as call: + call.return_value = compute.Operation() + client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1353,7 +1493,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionOperationsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py index 2240284ee62a..7a351ea2bad1 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_security_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,336 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SecurityPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.SecurityPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SecurityPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionSecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2562,7 +2900,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4535,9 +4872,10 @@ def test_add_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -5374,6 +5712,7 @@ def test_insert_rest_call_success(request_type): "label_fingerprint": "label_fingerprint_value", "labels": {}, "name": "name_value", + "params": {"resource_manager_tags": {}}, "parent": "parent_value", "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"}, "region": "region_value", @@ -5441,9 +5780,10 @@ def test_insert_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -5942,6 +6282,7 @@ def test_patch_rest_call_success(request_type): "label_fingerprint": "label_fingerprint_value", "labels": {}, "name": "name_value", + "params": {"resource_manager_tags": {}}, "parent": "parent_value", "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"}, "region": "region_value", @@ -6009,9 +6350,10 @@ def test_patch_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6362,9 +6704,10 @@ def test_patch_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py index ffb1f1114282..e5266992a0a4 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshot_settings.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -172,6 +180,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSnapshotSettingsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SnapshotSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionSnapshotSettingsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py index 00d66ec41597..2f335e1bb155 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Snapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = RegionSnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2105,7 +2418,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionSnapshotsReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py index 2078b44e70f8..439e8edfa6c5 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_certificates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslCertificate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslCertificateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1948,7 +2088,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2602,6 +2741,7 @@ def test_insert_rest_call_success(request_type): "self_link": "self_link_value", "self_managed": { "certificate": "certificate_value", + "encrypted_pem_private_key": "encrypted_pem_private_key_value", "private_key": "private_key_value", }, "subject_alternative_names": [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py index abff150f91d2..f6f22c5405a6 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_ssl_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslPoliciesList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_available_features_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_available_features), "__call__" + ) as call: + call.return_value = compute.SslPoliciesListAvailableFeaturesResponse() + client.list_available_features() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionSslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1932,7 +2140,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionSslPoliciesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2187,7 +2394,6 @@ def test_list_available_features_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py index 86f4725578f6..c2cbdcd5ef8f 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_http_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = RegionTargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1950,7 +2123,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py index d87e0cfacef7..90ac046e51b7 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_https_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpsProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpsProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_certificates_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_certificates), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_certificates() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = RegionTargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1956,7 +2197,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py index 7e8b9d8e4156..fe61cd293996 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_target_tcp_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetTcpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionTargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetTcpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1950,7 +2090,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py index b5e42a9d78e4..d6f2c6c5d2cc 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_url_maps.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.UrlMap() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.UrlMapList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_validate_api_version_header(transport_name): + client = RegionUrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.validate), "__call__") as call: + call.return_value = compute.UrlMapsValidateResponse() + client.validate() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1911,7 +2150,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionUrlMapsRequest "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py index b9cc0204e62c..23ad8f8f7777 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_region_zones.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,39 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionZonesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ZoneList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -966,7 +1007,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionZonesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py index e04e1b59b41b..acc20fef3e5d 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_regions.py @@ -55,6 +55,14 @@ from google.cloud.compute_v1.services.regions import RegionsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -160,6 +168,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RegionsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Region() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RegionsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RegionList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1126,7 +1200,6 @@ def test_list_rest_required_fields(request_type=compute.ListRegionsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py index c11f0146dbe8..db1cd979f68b 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reliability_risks.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReliabilityRisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReliabilityRisk() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReliabilityRisksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReliabilityRisksListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1158,7 +1232,6 @@ def test_list_rest_required_fields(request_type=compute.ListReliabilityRisksRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py index f7e95f13d497..ceeaff4588e4 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_blocks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,212 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReservationBlocksGetResponse() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationBlocksListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ReservationBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1381,7 +1595,6 @@ def test_list_rest_required_fields(request_type=compute.ListReservationBlocksReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py index a883855bfbfd..93c81a2d40dd 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_slots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReservationSlotsGetResponse() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.Operation() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_version_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_version), "__call__") as call: + call.return_value = compute.Operation() + client.get_version() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationSlotsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = ReservationSlotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1991,7 +2164,6 @@ def test_list_rest_required_fields(request_type=compute.ListReservationSlotsRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py index e4da1168b332..14e6661cebb7 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservation_sub_blocks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,280 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ReservationSubBlocksGetResponse() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_version_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_version), "__call__") as call: + call.return_value = compute.Operation() + client.get_version() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationSubBlocksListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_report_faulty_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.report_faulty), "__call__" + ) as call: + call.return_value = compute.Operation() + client.report_faulty() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ReservationSubBlocksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1805,7 +2087,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py index f80eda2c9813..588c93eeea61 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_reservations.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,379 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ReservationAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Reservation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ReservationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_perform_maintenance_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.perform_maintenance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.perform_maintenance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resize_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resize), "__call__") as call: + call.return_value = compute.Operation() + client.resize() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = ReservationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1350,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2363,7 +2743,6 @@ def test_list_rest_required_fields(request_type=compute.ListReservationsRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4920,6 +5299,7 @@ def test_insert_rest_call_success(request_type): "health_status": "health_status_value", "healthy_block_count": 2017, }, + "machine_count": 1373, "reservation_block_count": 2468, "reservation_maintenance": { "instance_maintenance_ongoing_count": 3599, @@ -6346,6 +6726,7 @@ def test_update_rest_call_success(request_type): "health_status": "health_status_value", "healthy_block_count": 2017, }, + "machine_count": 1373, "reservation_block_count": 2468, "reservation_maintenance": { "instance_maintenance_ongoing_count": 3599, diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py index f1d3efbeba4d..640725482724 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_resource_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ResourcePolicyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ResourcePolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ResourcePolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ResourcePoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1303,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2378,7 +2690,6 @@ def test_list_rest_required_fields(request_type=compute.ListResourcePoliciesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py index 499d393a68ce..083778310ba0 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollout_plans.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.RolloutPlan() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RolloutPlansClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RolloutPlansListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1865,7 +2005,6 @@ def test_list_rest_required_fields(request_type=compute.ListRolloutPlansRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py index 7b6e7526319d..2ed429de7532 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_rollouts.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.rollouts import RolloutsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -164,6 +172,237 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_advance_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.advance), "__call__") as call: + call.return_value = compute.Operation() + client.advance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_cancel_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.cancel), "__call__") as call: + call.return_value = compute.Operation() + client.cancel() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Rollout() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RolloutsListResponse() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_pause_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.pause), "__call__") as call: + call.return_value = compute.Operation() + client.pause() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_resume_api_version_header(transport_name): + client = RolloutsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.resume), "__call__") as call: + call.return_value = compute.Operation() + client.resume() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2232,7 +2471,6 @@ def test_list_rest_required_fields(request_type=compute.ListRolloutsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py index a06d9b4a5c22..ae0dfbb5f053 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routers.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.routers import RoutersClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,762 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.RouterAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_named_set), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.delete_route_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.delete_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Router() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_named_set), "__call__" + ) as call: + call.return_value = compute.RoutersGetNamedSetResponse() + client.get_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_nat_ip_info_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_nat_ip_info), "__call__" + ) as call: + call.return_value = compute.NatIpInfoResponse() + client.get_nat_ip_info() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_nat_mapping_info_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_nat_mapping_info), "__call__" + ) as call: + call.return_value = compute.VmEndpointNatMappingsList() + client.get_nat_mapping_info() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_route_policy), "__call__" + ) as call: + call.return_value = compute.RoutersGetRoutePolicyResponse() + client.get_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_router_status_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_router_status), "__call__" + ) as call: + call.return_value = compute.RouterStatusResponse() + client.get_router_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RouterList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_bgp_routes_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_bgp_routes), "__call__" + ) as call: + call.return_value = compute.RoutersListBgpRoutes() + client.list_bgp_routes() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_named_sets_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_named_sets), "__call__" + ) as call: + call.return_value = compute.RoutersListNamedSets() + client.list_named_sets() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_route_policies_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_route_policies), "__call__" + ) as call: + call.return_value = compute.RoutersListRoutePolicies() + client.list_route_policies() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_named_set), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.patch_route_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.patch_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_preview_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.preview), "__call__") as call: + call.return_value = compute.RoutersPreviewResponse() + client.preview() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_named_set_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_named_set), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_named_set() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_route_policy_api_version_header(transport_name): + client = RoutersClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_route_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_route_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -958,7 +1722,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2960,7 +3723,6 @@ def test_get_nat_mapping_info_rest_required_fields( "natName", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -3971,7 +4733,6 @@ def test_list_rest_required_fields(request_type=compute.ListRoutersRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4227,7 +4988,6 @@ def test_list_bgp_routes_rest_required_fields( "pageToken", "peer", "policyApplied", - "returnPartialSuccess", "routeType", ) ) @@ -4492,7 +5252,6 @@ def test_list_named_sets_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4760,7 +5519,6 @@ def test_list_route_policies_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py index f3879e42f234..94108361d643 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_routes.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.routes import RoutesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Route() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.RouteList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = RoutesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1848,7 +2023,6 @@ def test_list_rest_required_fields(request_type=compute.ListRoutesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py index 43116359b430..cdcd689ab60d 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_security_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,408 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_rule), "__call__") as call: + call.return_value = compute.Operation() + client.add_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SecurityPoliciesAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SecurityPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_rule), "__call__") as call: + call.return_value = compute.SecurityPolicyRule() + client.get_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SecurityPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_preconfigured_expression_sets_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_preconfigured_expression_sets), "__call__" + ) as call: + call.return_value = ( + compute.SecurityPoliciesListPreconfiguredExpressionSetsResponse() + ) + client.list_preconfigured_expression_sets() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch_rule), "__call__") as call: + call.return_value = compute.Operation() + client.patch_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_rule_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.remove_rule), "__call__") as call: + call.return_value = compute.Operation() + client.remove_rule() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = SecurityPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1368,7 +1778,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2728,7 +3137,6 @@ def test_list_rest_required_fields(request_type=compute.ListSecurityPoliciesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2977,7 +3385,6 @@ def test_list_preconfigured_expression_sets_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -4794,9 +5201,10 @@ def test_add_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -5744,6 +6152,7 @@ def test_insert_rest_call_success(request_type): "label_fingerprint": "label_fingerprint_value", "labels": {}, "name": "name_value", + "params": {"resource_manager_tags": {}}, "parent": "parent_value", "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"}, "region": "region_value", @@ -5811,9 +6220,10 @@ def test_insert_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6448,6 +6858,7 @@ def test_patch_rest_call_success(request_type): "label_fingerprint": "label_fingerprint_value", "labels": {}, "name": "name_value", + "params": {"resource_manager_tags": {}}, "parent": "parent_value", "recaptcha_options_config": {"redirect_site_key": "redirect_site_key_value"}, "region": "region_value", @@ -6515,9 +6926,10 @@ def test_patch_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, @@ -6860,9 +7272,10 @@ def test_patch_rule_rest_call_success(request_type): "preconfigured_waf_config": { "exclusions": [ { - "request_cookies_to_exclude": [ + "request_bodies_to_exclude": [ {"op": "op_value", "val": "val_value"} ], + "request_cookies_to_exclude": {}, "request_headers_to_exclude": {}, "request_query_params_to_exclude": {}, "request_uris_to_exclude": {}, diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py index 87de028fe3c7..851e17c7daca 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_service_attachments.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.ServiceAttachmentAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.ServiceAttachment() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ServiceAttachmentList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = ServiceAttachmentsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1307,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2405,7 +2717,6 @@ def test_list_rest_required_fields(request_type=compute.ListServiceAttachmentsRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py index e2a3c42f948d..2393ad5e7e52 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshot_settings_service.py @@ -60,6 +60,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -172,6 +180,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SnapshotSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SnapshotSettings() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SnapshotSettingsServiceClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py index 4a146a757dec..bffe104ec7cd 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_snapshots.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,311 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Snapshot() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SnapshotList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_kms_key_api_version_header(transport_name): + client = SnapshotsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.update_kms_key), "__call__" + ) as call: + call.return_value = compute.Operation() + client.update_kms_key() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -2029,7 +2342,6 @@ def test_list_rest_required_fields(request_type=compute.ListSnapshotsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py index 8b87f7f5d664..43292e67a0ff 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_certificates.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,173 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SslCertificateAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslCertificate() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SslCertificatesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslCertificateList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -985,7 +1160,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2141,7 +2315,6 @@ def test_list_rest_required_fields(request_type=compute.ListSslCertificatesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2913,6 +3086,7 @@ def test_insert_rest_call_success(request_type): "self_link": "self_link_value", "self_managed": { "certificate": "certificate_value", + "encrypted_pem_private_key": "encrypted_pem_private_key_value", "private_key": "private_key_value", }, "subject_alternative_names": [ diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py index b0213e527dcd..9cc08144a648 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_ssl_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,241 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SslPoliciesAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.SslPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SslPoliciesList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_available_features_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.list_available_features), "__call__" + ) as call: + call.return_value = compute.SslPoliciesListAvailableFeaturesResponse() + client.list_available_features() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SslPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1212,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2119,7 +2361,6 @@ def test_list_rest_required_fields(request_type=compute.ListSslPoliciesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2368,7 +2609,6 @@ def test_list_available_features_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py index 003ddef3d876..fb0094eec1c0 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pool_types.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,107 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = StoragePoolTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.StoragePoolTypeAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = StoragePoolTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.StoragePoolType() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = StoragePoolTypesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.StoragePoolTypeList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -988,7 +1097,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -1430,7 +1538,6 @@ def test_list_rest_required_fields(request_type=compute.ListStoragePoolTypesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py index 3f6ddccda554..10f02b71aaa4 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_storage_pools.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,344 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.StoragePoolAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.StoragePool() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.StoragePoolList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_disks_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_disks), "__call__") as call: + call.return_value = compute.StoragePoolListDisks() + client.list_disks() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = StoragePoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1315,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2355,7 +2700,6 @@ def test_list_rest_required_fields(request_type=compute.ListStoragePoolsRequest) "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2607,7 +2951,6 @@ def test_list_disks_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py index 1c74a69a16eb..d6e42f200fde 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_subnetworks.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,414 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.SubnetworkAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_expand_ip_cidr_range_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.expand_ip_cidr_range), "__call__" + ) as call: + call.return_value = compute.Operation() + client.expand_ip_cidr_range() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Subnetwork() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_iam_policy_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.get_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.get_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.SubnetworkList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_usable_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list_usable), "__call__") as call: + call.return_value = compute.UsableSubnetworksAggregatedList() + client.list_usable() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_iam_policy_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_iam_policy), "__call__" + ) as call: + call.return_value = compute.Policy() + client.set_iam_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_private_ip_google_access_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_private_ip_google_access), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_private_ip_google_access() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = SubnetworksClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1385,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", "views", ) @@ -2765,7 +3180,6 @@ def test_list_rest_required_fields(request_type=compute.ListSubnetworksRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "views", ) ) @@ -3014,7 +3428,6 @@ def test_list_usable_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProject", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py index 0797894eef26..179c483fc990 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_grpc_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetGrpcProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetGrpcProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = TargetGrpcProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1888,7 +2061,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetGrpcProxiesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py index 777b039fe63c..d559d9ca78b1 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_http_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,239 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetHttpProxyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = TargetHttpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1233,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2148,7 +2388,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpProxiesReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py index 7b0f115aa4d2..b59626f91cc1 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_https_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,379 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetHttpsProxyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetHttpsProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetHttpsProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_certificate_map_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_certificate_map), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_certificate_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_quic_override_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_quic_override), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_quic_override() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_certificates_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_certificates), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_certificates() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_policy_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_url_map_api_version_header(transport_name): + client = TargetHttpsProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_url_map), "__call__") as call: + call.return_value = compute.Operation() + client.set_url_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -994,7 +1375,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2154,7 +2534,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetHttpsProxiesRe "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py index 34a5efeec782..e996eaf07fc5 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_instances.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,243 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetInstanceAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetInstance() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetInstanceList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetInstancesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -985,7 +1230,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2185,7 +2429,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetInstancesReque "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py index f0258b180c4c..225494ff96a9 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_pools.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,447 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_health_check_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.add_health_check), "__call__" + ) as call: + call.return_value = compute.Operation() + client.add_health_check() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_add_instance_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.add_instance), "__call__") as call: + call.return_value = compute.Operation() + client.add_instance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetPoolAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetPool() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_health_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_health), "__call__") as call: + call.return_value = compute.TargetPoolInstanceHealth() + client.get_health() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetPoolList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_health_check_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_health_check), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_health_check() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_remove_instance_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.remove_instance), "__call__" + ) as call: + call.return_value = compute.Operation() + client.remove_instance() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_backup_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_backup), "__call__") as call: + call.return_value = compute.Operation() + client.set_backup() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_security_policy_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_security_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_security_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetPoolsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1777,7 +2226,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -3159,7 +3607,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetPoolsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py index 02d047d0fcb7..73450be27a2b 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_ssl_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,348 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetSslProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetSslProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_backend_service_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_backend_service), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_backend_service() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_certificate_map_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_certificate_map), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_certificate_map() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_proxy_header_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_proxy_header), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_proxy_header() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_certificates_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_certificates), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_certificates() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_ssl_policy_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_ssl_policy), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_ssl_policy() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetSslProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1886,7 +2236,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetSslProxiesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py index 5be96b4940cc..72a91051392e 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_tcp_proxies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,278 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetTcpProxyAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetTcpProxy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetTcpProxyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_backend_service_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_backend_service), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_backend_service() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_proxy_header_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.set_proxy_header), "__call__" + ) as call: + call.return_value = compute.Operation() + client.set_proxy_header() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = TargetTcpProxiesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -990,7 +1270,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2146,7 +2425,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetTcpProxiesRequ "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py index 0c4ffc1fca8c..7c4431711964 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_target_vpn_gateways.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -171,6 +179,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.TargetVpnGatewayAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.TargetVpnGateway() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.TargetVpnGatewayList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = TargetVpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -992,7 +1200,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2196,7 +2403,6 @@ def test_list_rest_required_fields(request_type=compute.ListTargetVpnGatewaysReq "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py index 9648dbf2df73..3e5d6928ec08 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_url_maps.py @@ -57,6 +57,14 @@ from google.cloud.compute_v1.services.url_maps import UrlMapsClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -162,6 +170,342 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.UrlMapsAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.UrlMap() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_invalidate_cache_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.invalidate_cache), "__call__" + ) as call: + call.return_value = compute.Operation() + client.invalidate_cache() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.UrlMapList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_validate_api_version_header(transport_name): + client = UrlMapsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.validate), "__call__") as call: + call.return_value = compute.UrlMapsValidateResponse() + client.validate() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -960,7 +1304,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2487,7 +2830,6 @@ def test_list_rest_required_fields(request_type=compute.ListUrlMapsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py index 5988ea9d356b..7db55e3f6edc 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_gateways.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,274 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.VpnGatewayAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.VpnGateway() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_status_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get_status), "__call__") as call: + call.return_value = compute.VpnGatewaysGetStatusResponse() + client.get_status() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.VpnGatewayList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_test_iam_permissions_api_version_header(transport_name): + client = VpnGatewaysClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.test_iam_permissions), "__call__" + ) as call: + call.return_value = compute.TestPermissionsResponse() + client.test_iam_permissions() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1245,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2352,7 +2627,6 @@ def test_list_rest_required_fields(request_type=compute.ListVpnGatewaysRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py index d520358006b2..7d64b9235896 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_vpn_tunnels.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,206 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_aggregated_list_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object( + type(client.transport.aggregated_list), "__call__" + ) as call: + call.return_value = compute.VpnTunnelAggregatedList() + client.aggregated_list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.VpnTunnel() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.VpnTunnelList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_set_labels_api_version_header(transport_name): + client = VpnTunnelsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.set_labels), "__call__") as call: + call.return_value = compute.Operation() + client.set_labels() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -969,7 +1177,6 @@ def test_aggregated_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", "serviceProjectNumber", ) ) @@ -2168,7 +2375,6 @@ def test_list_rest_required_fields(request_type=compute.ListVpnTunnelsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py index 50f98a7ab04c..5d09768a7814 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_wire_groups.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -169,6 +177,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.WireGroup() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.WireGroupList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_patch_api_version_header(transport_name): + client = WireGroupsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.patch), "__call__") as call: + call.return_value = compute.Operation() + client.patch() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1907,7 +2080,6 @@ def test_list_rest_required_fields(request_type=compute.ListWireGroupsRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) @@ -2932,6 +3104,7 @@ def test_insert_rest_call_success(request_type): "bandwidth_allocation": "bandwidth_allocation_value", "bandwidth_unmetered": 2013, "fault_response": "fault_response_value", + "flow_management": "flow_management_value", }, "wires": [ { @@ -3328,6 +3501,7 @@ def test_patch_rest_call_success(request_type): "bandwidth_allocation": "bandwidth_allocation_value", "bandwidth_unmetered": 2013, "fault_response": "fault_response_value", + "flow_management": "flow_management_value", }, "wires": [ { diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py index 9502820470a5..571ce4f23b69 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_operations.py @@ -59,6 +59,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -167,6 +175,138 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.DeleteZoneOperationResponse() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Operation() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.OperationList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_wait_api_version_header(transport_name): + client = ZoneOperationsClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.wait), "__call__") as call: + call.return_value = compute.Operation() + client.wait() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1334,7 +1474,6 @@ def test_list_rest_required_fields(request_type=compute.ListZoneOperationsReques "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py index 48e492285bc3..6167214e6724 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zone_vm_extension_policies.py @@ -61,6 +61,14 @@ ) from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -173,6 +181,171 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_delete_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.delete), "__call__") as call: + call.return_value = compute.Operation() + client.delete() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.VmExtensionPolicy() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_insert_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.insert), "__call__") as call: + call.return_value = compute.Operation() + client.insert() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.VmExtensionPolicyList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_update_api_version_header(transport_name): + client = ZoneVmExtensionPoliciesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.update), "__call__") as call: + call.return_value = compute.Operation() + client.update() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1950,7 +2123,6 @@ def test_list_rest_required_fields( "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) ) diff --git a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py index a19f6af74541..ee80594dbd9a 100644 --- a/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py +++ b/preview-packages/google-cloud-compute/tests/unit/gapic/compute_v1/test_zones.py @@ -55,6 +55,14 @@ from google.cloud.compute_v1.services.zones import ZonesClient, pagers, transports from google.cloud.compute_v1.types import compute +try: + from google.api_core import version_header + + HAS_GOOGLE_API_CORE_VERSION_HEADER = True # pragma: NO COVER +except ImportError: # pragma: NO COVER + HAS_GOOGLE_API_CORE_VERSION_HEADER = False + + CRED_INFO_JSON = { "credential_source": "/path/to/file", "credential_type": "service account credentials", @@ -158,6 +166,72 @@ def test__get_client_cert_source(): ) +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_get_api_version_header(transport_name): + client = ZonesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.get), "__call__") as call: + call.return_value = compute.Zone() + client.get() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + +@pytest.mark.parametrize( + "transport_name", + [ + ("rest"), + ], +) +def test_list_api_version_header(transport_name): + client = ZonesClient( + credentials=ga_credentials.AnonymousCredentials(), transport=transport_name + ) + # TODO: Make this test unconditional once the minimum supported version of + # google-api-core becomes 2.19.0 or higher. + api_core_major, api_core_minor = [ + int(part) for part in api_core_version.__version__.split(".")[0:2] + ] + if api_core_major > 2 or (api_core_major == 2 and api_core_minor >= 19): + # Mock the actual call within the gRPC stub, and fake the request. + with mock.patch.object(type(client.transport.list), "__call__") as call: + call.return_value = compute.ZoneList() + client.list() + + # Establish that the api version header was sent. + _, _, kw = call.mock_calls[0] + assert ( + version_header.API_VERSION_METADATA_KEY, + "2026-10-01-preview", + ) in kw["metadata"] + else: + pytest.skip( + "google-api-core>=2.19.0 is required for `google.api_core.version_header`" + ) + + @pytest.mark.parametrize( "error_code,cred_info_json,show_cred_info", [ @@ -1123,7 +1197,6 @@ def test_list_rest_required_fields(request_type=compute.ListZonesRequest): "maxResults", "orderBy", "pageToken", - "returnPartialSuccess", ) )